售前咨询
技术支持
渠道合作

开源软件框架之Hadoop

什么是Hadoop?

Hadoop是一个开发和运行处理大规模数据的软件平台,是Apache的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

架构

Hadoop由许多元素构成,其最底部是HDFS,它存储Hadoop集群中所有存储节点上的文件,HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成 ,对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,比如创建执行命令:hadoop fs -mkdir /fc/src/ 这样就创建了目录 /fc/src/,hadoop fs -rmr /fc/src/这样就删除了目录src,等等。Hadoop的架构是基于一组特定的节点构建的,如下图:它包括了 NameNode(仅一个,负责协调,提供元数据服务)、DataNode(可以多个,负责干活,提供存储块),这里括号的内容不明白的可以不用先管,继续往下看。

 1、NameNode

NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件;存储在HDFS中的文件会被分成块(Block),然后将这些块复制到多个计算机中(就是DataNode中),每个块的大小通常为64M,块大小和复制数量(默认保存3份)在创建文件时有客户机决定,可以设置。NameNode负责管理文件系统名称空间和控制外部客户机的访问,主要提供名称查询服务,NameNode保存的信息主要包括:哪个文件分了多少块,每个块放在哪个节点上等这些信息,如下列表:

1、文件owership和permissions

2、文件包含哪些块

3、Block保存在哪个DataNode(由DataNode启动时上报)


NameNode的metadata(元数据) 信息在启动后会加载到内存,metadata存储到磁盘文件名为”fsimage”;

2、DataNode
DataNode也是通常在HDFS实例中单独机器上运行的软件,Hadoop集群包含一个NameNode和大量DataNode。DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来;
DataNode的主要工作:保存Block(数据块)、启动DataNode线程时会向NameNode汇报block信息、通过向NameNode发送心跳保持与其联系(3秒一次),如果NN(下面都用NN表示NameNode,DN表示DataNode,便于书写)10分钟没有收到DN的心跳,则认为其已经Lost,并copy其上的block(块)到其他DN。如下图:


这里讲下Block的副本放置策略:

1、第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点

2、第二个副本:放置在于第一个副本不同的机架的节点上

3、第三个副本:与第二个副本相同集群的节点

4、更多副本:随机节点

再提下Block:

设置一个Block 64MB,如果上传文件小于该值,仍然会占用一个Block的命名空间(NameNode metadata),但是物理存储上不会占用64MB的空间

Block大小和副本数由Client端上传文件到HDFS时设置,其中副本数可以变更,Block是不可以再上传后变更的;所以要根据自己平时处理的文件大小自己设置,以免浪费块空间;

3、数据损坏处理

1、当DN读取block的时候,它会计算checksum

2、如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。

3、client读取其它DN上的block;NN标记该块已经损坏,然后复制block达到预期设置的文件备份数

4、DN在其文件创建后三周验证其checksum

Hadoop优点

Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。

Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。

Hadoop 还是可伸缩的,能够处理 PB 级数据。

此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

hadoop大数据处理的意义

Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

信息安全

通过Hadoop安全部署经验总结,开发出以下十大建议,以确保大型和复杂多样环境下的数据信息安全。

1、先下手为强!在规划部署阶段就确定数据的隐私保护策略,最好是在将数据放入到Hadoop之前就确定好保护策略。

2、确定哪些数据属于企业的敏感数据。根据公司的隐私保护政策,以及相关的行业法规和政府规章来综合确定。

3、及时发现敏感数据是否暴露在外,或者是否导入到Hadoop中。

4、搜集信息并决定是否暴露出安全风险。

5、确定商业分析是否需要访问真实数据,或者确定是否可以使用这些敏感数据。然后,选择合适的加密技术。如果有任何疑问,对其进行加密隐藏处理,同时提供最安全的加密技术和灵活的应对策略,以适应未来需求的发展。

6、确保数据保护方案同时采用了隐藏和加密技术,尤其是如果我们需要将敏感数据在Hadoop中保持独立的话。

7、确保数据保护方案适用于所有的数据文件,以保存在数据汇总中实现数据分析的准确性。

8、确定是否需要为特定的数据集量身定制保护方案,并考虑将Hadoop的目录分成较小的更为安全的组。

9、确保选择的加密解决方案可与公司的访问控制技术互操作,允许不同用户可以有选择性地访问Hadoop集群中的数据。

10、确保需要加密的时候有合适的技术(比如Java、Pig等)可被部署并支持无缝解密和快速访问数据。


SSL证书采用了技术含量比较高的加密技术。日后GDCA(数安时代)将会持续为大家推荐更多关于SSL证书的技术知识。让大家正确认识SSL证书,快速无误部署HTTPS安全协议。更多资讯,请关注GDCA。

相关文章