Hadoop

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode时,将立 即通过管道方式将块内容转发给副本 DataNode。客户机也负责创建保存在相同 HDFS名称空间中的校验和 (checksum)文件 。
在最后的文件块发送之后,NameNode将文件创建提交到它的持久化元数据存储(在 EditLog和 FsImage文 件) 。
这里提供一个示例,帮助您理解它。假设输入域是 one small step for man,one giant leap for mankind。
区别
Hadoop是Apache软件基金会发起的一个项目,在大数据分析以及非结构化数据蔓延的背景下,Hadoop受到 了前所未有的** 。
Hadoop是一种分布式数据和计算的框架。它很擅长存储大量的半结构化的数据集。数据可以随机存放,所以 一个磁盘的失败并不会带来数据丢失。Hadoop也非常擅长分布式计算——快速地跨多台机器处理大型数据集合 。
NameNode是一个通常在 HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客 户机的访问。NameNode决定是否将文件映射到 DataNode上的复制块上。对于最常见的 3个复制块,第一个复制 块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上 。
Hadoop和高效能计算、网格计算的区别
在Hadoop出现之前,高性能计算和网格计算一直是处理大数据问题主要的使用方法和工具,它们主要采用消 息传递接口(Message Passing Interface,MPI)提供的API来处理大数据。高性能计算的思想是将计算作业分 散到集群机器上,集群计算节点访问存储区域网络SAN构成的共享文件系统获取数据,这种设计比较适合计算密 集型作业。当需要访问像PB级别的数据的时候,由于存储设备网络带宽的限制,很多集群计算节点只能空闲等待 数据。而Hadoop却不存在这种问题,由于Hadoop使用专门为分布式计算设计的文件系统HDFS,计算的时候只需要 将计算代码推送到存储节点上,即可在存储节点上完成数据本地化计算,Hadoop中的集群存储节点也是计算节 点。
实际的 I/O事务并没有经过 NameNode,只有表示 DataNode和块的文件映射的元数据经过 NameNode。当外 部客户机发送请求要求创建文件时,NameNode会以块标识和该块的第一个副本的 DataNode IP地址作为响应。 这个 NameNode还会通知其他将要接收该块的副本的 DataNode 。
MapReduce流程的概念流MapReduce和Hadoop是相互独立的,实际上又能相互配合工作得很好 。
信息安全
通过Hadoop安全部署经验总结,开发出以下十大建议,以确保大型和复杂多样环境下的数据信息安全 。
1、先下手为强!在规划部署阶段就确定数据的隐私保护策略,最好是在将数据放入到Hadoop之前就确定好保 护策略 。
Hadoop框架可在单一的 Linux平台上使用(开发和调试时),官方提供MiniCluster作为单元测试使用,不 过使用存放在机架上的商业服务器才能发挥它的力量。这些机架组成一个 Hadoop集群。它通过集群拓扑知识决 定如何在整个集群中分配作业和文件。Hadoop假定节点可能失败,因此采用本机方法处理单个计算机甚至所有机 架的失败 。
在分布式编程方面,MPI是属于比较底层的开发库,它赋予了程序员极大的控制能力,但是却要程序员自己 控制程序的执行流程,容错功能,甚至底层的套接字通信、数据分析算法等底层细节都需要自己编程实现。这种 要求无疑对开发分布式程序的程序员提出了较高的要求。
应用程序
Hadoop的最常见用法之一是 Web搜索。虽然它不是唯一的软件框架应用程序,但作为一个并行数据处理引擎, 它的表现非常突出。Hadoop最有趣的方面之一是 Map and Reduce流程,它受到Google开发的启发。这个流程称 为创建索引,它将 Web爬行器检索到的文本 Web页面作为输入,并且将这些页面上的单词的频率报告作为结果。 然后可以在整个 Web搜索过程中使用这个结果从已定义的搜索参数中识别内容 。
可见,HDFS并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件 。
如果客户机想将文件写到 HDFS上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS块大小,创建文件的请求将发送给 NameNode。NameNode将以 DataNode标识和目标块响应客户机 。
Hadoop
分布式系统基础架构
01 起源
03 核心架构 05 区别
目录
02 优点 04 应用程序 06 信息安全
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下, 开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统 ( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容 错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访 问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的 要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS 和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 。
2、确定哪些数据属于企业的敏感数据。根据公司的隐私保护政策,以及相关的行业法规和政府规章来综合确 定。
3、及时发现敏感数据是否暴露在外,或者是导入到Hadoop中 。
4、搜集信息并决定是否暴露出安全风险 。
5、确定商业分析是否需要访问真实数据,或者确定是否可以使用这些敏感数据。然后,选择合适的加密技术。 如果有任何疑问,对其进行加密隐藏处理,同时提供最安全的加密技术和灵活的应对策略,以适应未来需求的发 展。
Hadoop图标
优点
Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop以一种可靠、高效、可伸缩的方式进行 数据处理。
Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的 节点重新分布处理。
Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。 Hadoop还是可伸缩的,能够处理 PB级数据。 此外,Hadoop依赖于社区服务,因此它的成本比较低,任何人都可以使用。 Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海 量数据的应用程序。它主要有以下几个优点 : 1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖 。 2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以 千计的节点中 。
NameNode在一个称为 FsImage的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事 务的记录文件(这里是 EditLog)将存储在 NameNode的本地文件系统上。FsImage和 EditLog文件也需要复制 副本,以防文件损坏或 NameNode系统丢失 。
NameNode本身不可避免地具有SPOF(Single Point Of Failure)单点失效的风险,主备模式并不能解决 这个问题,通过Hadoop Non-stop namenode才能实现100% uptime可用时间 。
存储在 HDFS中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID架构 大不相同。块的大小(1.x版本默认为 64MB,2.x版本默认为128MB)和复制的块数量在创建文件时由客户机决定。 NameNode可以控制所有文件操作。HDFS内部的所有通信都基于标准的 TCP/IP协议。
核心架构
1
HDFS
2
NameNode
3
DataNode
4
文件操作
5
Linux集群
对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特点决定的。这些节点包括 NameNode (仅一个),它在 HDFS内部提供元数据服务;DataNode,它为 HDFS提供存储块。由于仅存在一个 NameNode, 因此这是 HDFS 1.x版本的一个缺点(单点失败)。在Hadoop 2.x版本可以存在两个NameNode,解决了单节点故 障问题 。
起源
Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一 。2004年,Google在 “操作系统设计与实现”(Operating System Design and Implementation,OSDI)会议上公开发表了题为 MapReduce:Simplified Data Processing on Large Clusters(Mapreduce:简化大规模集群上的数据处理) 的论文之后,受到启发的Doug Cutting等人开始尝试实现MapReduce计算框架,并将它与NDFS(Nutch Distributed File System)结合,用以支持Nutch引擎的主要算法 。由于NDFS和MapReduce在Nutch引擎中有 着良好的应用,所以它们于2006年2月被分离出来,成为一套完整而独立的软件,并被命名为Hadoop。到了2008 年年初,hadoop已成为Apache的顶级项目,包含众多子项目,被应用到包括Yahoo在内的很多互联网公司 。
MapReduce是处理大量半结构化数据集合的编程模型。编程模型是一种处理并结构化特定问题的方式。例如, 在一个关系数据库中,使用一种集合语言执行查询,如SQL。告诉语言想要的结果,并将它提交给系统来计算出 如何产生计算。还可以用更传统的语言(C++,Java),一步步地来解决问题。这是两种不同的编程模型, MapReduce就是另外一种 。
MapReduce本身就是用于并行处理大数据集的软件框架。MapReduce的根源是函数性编程中的 map和 reduce 函数。它由两个可能包含有许多实例(许多 Map和 Reduce)的操作组成。Map函数接受一组数据并将其转换为一 个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce函数接受 Map函数生成的列表,然后根据它们的 键(为每个键生成一个键/值对)缩小键/值对列表 。
MapReduce
最简单的 MapReduce应用程序至少包含 3个部分:一个 Map函数、一个 Reduce函数和一个 main函数。 main函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop提供了大量的接口和抽象类,从而为 Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等 。
DataNode也是一个通常在 HDFS实例中的单独机器上运行的软件。Hadoop集群包含一个 NameNode和大量 DataNode。DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop的一个假设是: 机架内部节点之间的传输速度快于机架间节点的传输速度 。
DataNode响应来自 HDFS客户机的读写请求。它们还响应来自 NameNode的创建、删除和复制块的命令。 NameNode依赖来自每个 DataNode的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode可以 根据这个报告验证块映射和其他文件系统元数据。如果 DataNode不能发送心跳消息,NameNode将采取修复措施, 重新复制在该节点上丢失的块 。
相关文档
最新文档