0%

安全无小事,我们常常要为了预防安全问题而付出大量的代价。虽然小区楼道里面的灭火器、消防栓常年没人用,但是我们还是要准备着。我们之所以愿意为了这些小概率事件而付出巨大的成本,是因为安全问题一旦发生,很多时候我们将无法承担它带来的后果。

在软件行业,安全问题尤其突出,因为无法预料的事情实在太多了。软件的复杂性让我们几乎无法完全扫清安全问题,模块A独立运行可能没问题,但是一旦和模块B一起工作也许就产生了安全问题。

不可否认为了让软件更安全,我们引入了很多复杂的机制。不少人开发者也抱怨为了进行安全处理而做了太多额外的事情。在一个复杂的分布式软件Hadoop中,我们为此付出的成本将更大。比如,我们可能可以比较轻松的搭建一个无安全机制的集群,但是一旦需要支持安全机制的时候,我们可能会付出额外几倍的时间来进行各种复杂的配置和调试。

Hadoop在开始的几个版本中其实并没有安全机制的支持,后来Yahoo在大规模应用Hadoop之后,安全问题也就日益明显起来。大家都在一个平台上面进行操作是很容易引起安全问题的,比如一个人把另一个人的数据删除了,一个人把另一个人正在运行的任务给停掉了,等等。在当今的企业应用里面,一旦我们的数据开始上规模之后,安全机制的引入几乎是必然的选择。所以作为大数据领域的开发者,理解Hadoop的安全机制就显得非常重要。

Hadoop的安全机制现在已经比较成熟,网上关于它的介绍也很多,但相对较零散,下面我将尝试更系统的,并结合实例代码,给大家分享一下最近一段时间关于Hadoop安全机制的学习所得,抛个砖。

预计将包括这样几个方面:

  1. Kerberos协议介绍及实践
  2. Kerberos协议发展及Hadoop相关源码分析
  3. Hadoop安全集群搭建及测试
  4. 周边工具的安全支持
阅读全文 »

上一篇文章中,我们分析了Kerberos协议的设计和通信过程。可以了解到,Kerberos主要实现了不在网络传输密码的同时又能在本地进行高性能鉴权。由于kerberos的协议设计相对复杂,看到评论有人还有疑问,这里再举一个例子来分析一下kerberos的安全性。

Kerberos协议回顾

假设有三个组件A B C,A想和C进行安全通信,而B作为一个认证中心保存了认证信息。那么以以下的方式进行通信就可以做到安全:

  1. A向B请求说要访问C,将此消息用A的秘钥加密之后,发给B
  2. B验证A的权限之后,用A自己的秘钥加密一个会话密码,然后传给A
  3. 同时B还向A发送一个A自己不能解密,只能由C解密的消息
  4. A在解密会话密码之后,将需要和C通信的消息(业务消息)用这个会话密码加密然后发给C,同时A需要将B发给A而A又不能解密的消息发给C
  5. C在拿到消息之后,可以将第三步中的消息解密,得到会话秘钥,从而可以解密A发过来的业务消息了
阅读全文 »

系列文章:

前面的文章中我们分析了Hadoop安全机制中用到的协议及相关源代码实现,这一篇文章我们主要来看看如何搭建一套安全的Hadoop集群。

简单起见,我们这里的集群所有的组件将运行在同一台机器上。对于keytab的配置,我们也从简,只配置一个kerberos的service账号供所有服务使用。

建立测试用例

TDD是敏捷最重要的实践之一,可以有效的帮助我们确定目标,验证目标,它可以带领我们走得又快又稳。跟随TDD的思想,我们先从测试的角度来看这个问题。有了前面的基础知识,假设我们已经有了一套安全的Hadoop集群,那么我们应当可以从集群读写文件,运行MapReduce任务。我们可以编写读写文件的测试用例如下:

阅读全文 »

系列文章:

前面的文章中,我们搭建了一套安全的hadoop集群,并建立了一个对应的测试。结合相关的基础知识,我们应该对安全的hadoop集群有了一定的认识。本文主要关注如何将大数据其他组件安全地与hadoop进行集成。我们将关注这几个组件:hive hbase spark livy

hive

首先来看hivehive是最初由facebook发起的基于hadoop大数据架构的数据仓库。hive直接将hdfs变为了一个支持sql的数据存储。时至今日,hive已成为企业大数据最基础的组件之一,各种上层的组件均和hive有良好的集成。

采用跟之前同样的思路,我们先来建立一个测试,如下:

阅读全文 »

技术飞速发展,机器学习正在成为各个企业的核心竞争优势之一。除了在处于风口浪尖的计算机视觉方向的应用,可能更能产生直接的价值的一个方向是在智能推荐领域。比如广告推荐,如果我们有一个更有效的算法,更精准的向用户推荐了某个广告,用户的广告点击将为企业直接带来收益。

然而在推荐领域,我们面临的是与当前的深度学习颇有不同的问题。这些不同主要体现在:

  • 超大的数据量
  • 领域专家人工设计的特征
  • 极致的在线服务性能需求

为了解决这个技术上非常有挑战的问题,一般情况下,我们要考虑的方案都是借助于大数据的工具。自Google的两篇经典论文发表以来,大数据相关生态发展至今已经十多年过去了,虽然一直都有新的思想的产生,但是很多经典的工具已趋于成熟。大数据的相关工具应对大数据的挑战应当是理所应当的选择。

阅读全文 »

以下是一组某电商应用消费数据,你能从中看出什么?

日期 2019/06/01 2019/06/02 2019/06/03 2019/06/04 2019/06/05 2019/06/06 2019/06/07
金额(万) 213 181 163 147 152 155 171

我们应该能很容易的注意到:

阅读全文 »

如果我们想知道一所办公楼的所有人员的平均身高,该怎么做?大家应该都能想到,我们可以通过统计抽样的办法,随机去调查一些人的身高,然后通过这些人的平均身高去估计所有人员的平均身高。但这里还有一个问题,这里抽样得到的平均身高准吗?有多准呢?

要回答这里的问题,我们需要有一些基本的统计学知识。

阅读全文 »

你的收入和支出相关吗?这是一个很难回答的问题,表面上看好像是相关的,因为随着收入的增长,有了更多的钱,当然可以有更多的支出。但是,很多公司一年才涨一次工资,在这一年内,物价却可能在不停上涨,是不是收入没涨而每个月的支出都在涨呢?

如何来回答是否相关的问题呢?用统计学的方法,我们可以把收入和支出当做两个变量来对待,然后用数学的方法衡量其相关性。

阅读全文 »

数据工作中有一类非常重要的角色,那就是数据分析师。为什么这个角色这么重要呢?因为要是没有这个角色,不管一个企业中的数据管理做得有多么好都没用,无法带来实际的价值。这些数据就像是藏在海底的石油,而数据分析师就是开采海底石油的油井设备。要想让石油用于汽车轮船,需要通过这些设备先将海底的石油抽取出来,经过加工处理,提纯。

阅读全文 »