• 1. Hadoop分享云计算概念 Google的云计算 Hadoop HDFS Map/Reduce 日志框架的Hadoop尝试 路在何方
  • 2. Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。 LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。
  • 3. 云计算 云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。 云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
  • 4. 云计算的显著特点超大规模。Google云计算已经拥有100多万台服务器, Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。 虚拟化。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。 高可靠性。 “云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。 通用性。云计算不针对特定的应用,同一个“云”可以同时支撑不同的应用运行。 高可扩展性。 “云”的规模可以动态伸缩,满足应用和用户规模增长的需要。 按需服务。 “云”是一个庞大的资源池,你按需购买;云可以象自来水,电,煤气那样计费。 关键字:SAAS, Utility Computing …
  • 5. Agenda云计算概念 Google的云计算 Hadoop HDFS Map/Reduce 日志框架的Hadoop尝试
  • 6. Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。 LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。
  • 7. GOOGLE的集群系统Google的数据中心使用廉价的Linux PC机组成集群,在上面运行各种应用。核心组件是3个: 1、GFS(Google File System)。一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节。 2、MapReduce。Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。 3、BigTable。一个大型的分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。
  • 8. Agenda云计算概念 Google的云计算 Hadoop HDFS Map/Reduce 日志框架的Hadoop尝试 路在何方
  • 9. Hadoop简介Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架。MapReduce的概念来源于Google实验室,它是一个简化并行计算的编程模型,适用于大规模集群上的海量数据 处理,目前最成功的应用是分布式搜索引擎。 Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。 由HDFS、MapReduce、HBase、Hive 和ZooKeeper等成员组成。其中,HDFS 和MapReduce 是两个最基础最重要的成员。 主页:http://hadoop.apache.org/
  • 10. Hadoop以HDFS为存储,实现了Map/Reduce模型
  • 11. hadoop主要的一些特点:   1扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。 2成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。 3高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。 4可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。
  • 12. Agenda云计算概念 Google的云计算 Hadoop HDFS Map/Reduce 日志框架的Hadoop尝试 路在何方
  • 13. HDFSHDFS (Hadoop Distributed File System)是Google GFS 的开源版本,一个高度容错的分布式文件系统,适合部署在廉价的机器上。HDFS能够提供高吞吐量的数据访问,支持大文件存储,非常适合大规模数据集上的应用。 分布式文件系统是Hadoop云计算的基础。
  • 14. HDFS的设计目标硬件错误: 错误检测和快速、自动的恢复是HDFS最核心的架构目标。 流式数据访问:HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。比之数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。 大规模数据集:HDFS上的一个典型文件大小一般都在G字节至T字节。
  • 15. HDFS的设计目标简单的一致性模型 : HDFS应用需要一个“一次写入多次读取”的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐 量的数据访问成为可能。Map/Reduce应用或者网络爬虫应用都非常适合这个模型。目前还有计划在将来扩充这个模型,使之支持文件的附加写操作。 “移动计算比移动数据更划算”:一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。因为这样就能降低网络阻塞的影响,提高系统数据的吞吐量。将计算移动到数据附近,比之将数据移动到应用所在显然更好。HDFS为应用提供了将它们自己移动到数据附近的接口。 异构软硬件平台间的可移植性 :HDFS在设计的时候就考虑到平台的可移植性。这种特性方便了HDFS作为大规模数据应用平台的推广。
  • 16. HDFS
  • 17. 节点的分类Namenode Datanode SecondaryNamenode
  • 18. NamenodeHDFS采用master/slave架构。一个HDFS集群是有一个Namenode(master)和一定数目的Datanode(slave)组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。
  • 19. Namenode作用1.负责管理文件系统的namespace和客户端对文件的访问。 2.决定数据到具体Datanode节点的映射。 3.数据复制。(副本的存放与选择,savemode) Namenode在内存中保存着整个文件系统namespace和文件Blockmap的映像。 Editlog
  • 20. Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。 LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。
  • 21. DatanodeDatanode不知道关于文件的任何内容、格式,它将文件中的数据保存在本地的文件系统上,并在任务中按Namenode给定的操作处理文件。
  • 22. SecondaryNamenode用户配置的额外节点,可以不单独配置,默认在Namenode节点上。 SecondaryNamenode:负责定期接受Editlog,与对Namenode数据元的检查。
  • 23. 复本存储
  • 24. 基本概念机架感知 (机架id) 副本选择 (就近) 安全模式 文件系统元数据持久化(EditLog, FsImage) 通讯协议 (TCP/IP ClientProtocol, DatanodeProtocol) 磁盘数据错误,心跳检测和重新复制 元数据备份,namenode单点故障
  • 25. client读取数据流程
  • 26. 网络存储距离在HDFS里,数据的移动的距离可以简单量 化:
  • 27. client写入数据流程
  • 28. 数据复制(Replica)数据复制流程
  • 29. 性能测试测试环境 cluster     ubuntu     ubuntu-desk     dev211007.sqa     dev211008.sqa dfs.block.size = 67108864  (64M) dfs.replication = 3 通过rz直接传100M文件,传到本地虚拟机用11秒,传到实验室dev211007.sqa用时35秒。 上面测试结果是20秒,一个block在本地虚拟机,一个block在实验室,说明上传到HDFS的速度与rz直接上传文件的速度相近。 并发性:集群大小,受制于namenode单点
  • 30. HDFSHDFS作为通用的分布式文件系统并不是最好的选择,它在并发控制、缓存一致性以及小文件读写的效率上是比较弱的。但是它有自己明确的设计目标,那就是支 持大的数据文件(兆至T级),并且这些文件以顺序读为主,以文件读的高吞吐量为目标,并且与MapReduce框架紧密结合。
  • 31. Agenda云计算概念 Google的云计算 Hadoop HDFS Map/Reduce 日志框架的Hadoop尝试 路在何方
  • 32. MapReduceMapReduce 是 Google 公司的核心计算模型,它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数,Map 和 Reduce, 这是一个令人惊讶的简单却又威力巨大的模型。适合用 MapReduce 来处理的数据集(或任务)有一个基本要求: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
  • 33. 用MR来折腾下面的机器!
  • 34. Map/Reduce计算流程
  • 35. 分布式存储与map/reduce形象的表示
  • 36. Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。 LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。
  • 37. MapReduce的总体结构 运行于Hadoop的MapReduce应用程序最基本的组成部分包括: 一个Mapper 一个Reducer类 一个创建JobConf的执行程序 还可以包括Combiner,InputFormat, OutputFormat, Partition。
  • 38. Map/Reduce函数函数输入输出说明Map…1. 是由input split解析而来。 2.每一个输入的 会输出一个或多个 是计算的中间结果。 Reduce输入的中间结果 中的 List(v2) 表示是一批属于同一个k2 的 value
  • 39. Word Countfoo.txt: Sweet, this is the foo file bar.txt: This is the bar file 期望输出: sweet 1 this 2 is 2 …
  • 40. Word Count public static class TokenizerMapper extends Mapper{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } }
  • 41. Word Count public static class IntSumReducer extends Reducer { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } }
  • 42. 复杂的分布式计算细节都由Hadoop来做了!
  • 43. (本页无文本内容)
  • 44. HOW TO PLAY小象是怎么拨动齿轮的
  • 45. Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。 LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。
  • 46. Hadoop 里启动job的过程Shared File System HDFSClient NodeMapReduce ProgramJob TrackerClient JVMJobClient1:run Job2:getnew Job ID3:Copy Resources4: Submit Job5:Initialize Job6: Retrieve Input SplitsJob Tracker Node7:Heart Beat (returns task)9: Launch10:RunChildMap Task or Reduce TaskTask Tracker NodeTaskTracker8: Retrieve Job Resources
  • 47. JobTracker和TaskTracker:JobTracker:master服务。 master负责调度job的每一个子任务task运行于slave上,并监控它们,如果发现有失败的task就重新运行它,slave则负责直接执行每一个task。 一般情况应该把JobTracker部署在单独的机器上。
  • 48. JobTracker和TaskTracker:TaskTracker:多个运行于多个节点的slaver服务,一个Datanode节点一个。 负责每一个节点上具体task任务的调度,并定时将任务状态反馈给jobtracker。
  • 49. 任务执行
  • 50. 任务状态更新
  • 51. (本页无文本内容)
  • 52. Shuffle & Sort
  • 53. Agenda云计算概念 Google的云计算 Hadoop HDFS Map/Reduce 日志框架的Hadoop尝试 路在何方
  • 54. 日志框架的hadoop尝试
  • 55. 日志框架使用hadoop的好处利用分布式计算的强大计算能力,很容易分析原始日志文件,生成按索引归类的文件。 查询时,map/reduce模型有天然的排序功能,又可在map中过滤。 以日志文件为基础,利用map/reduce模型,可以很方便的扩展其它应用,如日志分析,数据挖掘。 HDFS中可以存储海量数据。 系统横向扩展容易。
  • 56. 为何没采用hadoop?不适合实时查询任务。hadoop是为海量数据设计的,其任务调度占用一定时间,不适合实时任务。官方推荐每个map任务最好不少于1分钟。根据实验结果,即使查询一个很小的文件(10K),用时也要23秒,这是极限了 通过hadoop的Hbase,可以解决实时查询的问题,但其单索引不能满足业务需求。
  • 57. Agenda云计算概念 Google的云计算 Hadoop HDFS Map/Reduce 日志框架的Hadoop尝试 路在何方
  • 58. Hadoop 不是万能药 有Hadoop 做不到的事情 不爽的事情 总结
  • 59. 参考资料http://hadoop.apache.org/common/docs/r0.20.0/cn/index.html 官方文档。 http://developer.yahoo.com/hadoop/tutorial/ Yahoo的入门教程 http://www.linuxidc.com/search.aspx?Where=Nkey&Keyword=HadoopHadoop相关技术文章 《Hadoop The Definitive Guide》
  • 60. Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。 LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。
  • 61. Any Questions?