hadoop学习总结


Share Knowledge Share Happiness 工欲善其事必先利其器 1 打开视界,打开世界 我总觉得诗人和旅行者天生有共同的特质:他们一直在追寻着灵魂的升华。在这一过程中, 他们眼里可能看到了人间百态或者是人间天堂,基于此,才有诗之深情之切。这种感知生命 深度的起源,在于视界! 生命的维度远不止时间一维而已,一个多月之前距离现在已经有 30 多天的距离。如果我 们只看年龄,那么我真的比过去大了一个多月。但是,如果把知识这个维度引入生命,那么 一切都会产生奇妙的‘化学反应’。 我可以很骄傲的告诉大家,在这一个多月的学习和生活中,我学到了很多。如果将生命的 维度在次细化,那么知识将并不是一维这样简单。他变得复杂、交错,以致形成知识网络。 从机器学习算法开始学习,我接触到了分类、聚类、关联、回归算法。这些算法紧密的和我 在本科所学习的知识联系起来,可以认为是大学所学知识的一个应用。但大数据的知识远远 不是机器学习。海量的数据分析变成现实是依赖于计算机科学与技术的飞快发展,尤其是分 布式文件、数据存储系统和分布式并行算法的飞快发展。国外的科技公司生产出了 Hadoop 这个奇妙的产品,更是将上述技术融合到一起,由此,大数据产业风风火火的在全世界各地 落地生根。 我的视界慢慢被打开了! 知识 知识增长量 年龄 年龄增长量 Share Knowledge Share Happiness 工欲善其事必先利其器 2 在公司学习的一个多月时间,我主要学习了下图所展示的部分技术: 我将从下面的一个三角关系来展开我的工作总结: 机器学习算法 分 类 算 法 聚 类 算 法 关 联 算 法 回 归 算 法 HDFS HCatalog HBase Mapreduce/Yarn Hive Pig 各行各业的数据 数据集层 文件存储层 数据存储层 编程模型层 数据分析层 大数据知识体系图 分布式数据储存系统 分布式文件储存系统(DFS) 并行分布式计算编程模型 Mahout Hive Pig 其他上层应用..... Share Knowledge Share Happiness 工欲善其事必先利其器 3 从上图,我们就可以看出来:分布式文件储存系统是整个大数据分析的基础,基于此发展起 来一系列的其他技术。这些技术有我要讲述的分布式数据储存系统(我要讲述 Hbase)、并 行分布式计算编程模型(我要讲述的是 Map/Reduce、Yarn 框架的编程模型)。 1.分布式文件存储系统(HDFS) HDFS 分布式系统采用了主从结构构建,Name Node 为主节点,其他 Data Node 为从节 点。文件以数据块的形式储存在 Data Node 中。一个 HDFS 分布式文件系统的架构图如下 图所示: HDFS 的 NameNode 和 DataNode 是和文件存储关系比较大的两个角色。NameNode 是 HDFS 系 统 中 的 管 理 者 , DataNode 是 HDFS 中保存数据的节点。下面我结 合 Meta data (Name,replicas) /home/foo/data1->2,4 Name Node Secondary Name Node Client1 Client2 Data Node Data Node 5 4 1 3 5 8 1 4 Data Node 5 4 2 3 ...... Share Knowledge Share Happiness 工欲善其事必先利其器 4 Map/Reduce 程序来讲解文件存储在 HDFS 中,如何被运用的过程。 1.1 文件在 HDFS 的存储 我们将文件名为 test.txt(大小为 192MB)文件数据存放在 HDFS 的 http://localhost: 9010/user/sn/testdata 文件夹下 这时,HDFS 根据 test.txt 的大小和 HDFS 默认的数据快的大小(64MB)进行分片,HDFS 将 test.txt 文件分成 3 片。我们假设这三片的名称为 1,2,3. 我们假设我们的集群有四台机器,一台机器为 master,其他三台为 slave. Master 上的 NameNode 上保存着 Test.txt 的元数据信息,3 台 slave 上保存着 Test.txt 的具体数据信息。 具体如下图所示: 红色虚线表示的意思为:数据块备份(由于备份的原则不懂就随便画了) 我们可以使用命令行、HDFS 提供的 API 对 HDFS 进行文件操作。现在,我们可以使用其 他应用程序对 HDFS 进行读、写操作。 2 Name Node /user/sn/testdata->1,2,3 1,2,3 数据块所在的 Data Node 地址 (数据有备份) 1 3 3 1 22 Data note Data note Data note Share Knowledge Share Happiness 工欲善其事必先利其器 5 下面介绍一种 Hadoop 提供的 SequenceFile 格式: Header Record Sync Record Record Sync ... Record Length Key Length Key Value 文件名作为 Key,文件内容作为 Value 注:这种文件的格式将被用在 Map/Reduce 编程中的 Map 函数的参数 2.并行分布式编程框架 2.1 Map/Reduce 编程框架 Share Knowledge Share Happiness 工欲善其事必先利其器 6 通过上述编程框架的了解,我们知道了我们的数据分析人员的工作:定义 job。通过定义 job 的配置文件我们可以定义 split 的最大值和最小值,可以定义 reduce 任务的个数。在 map 和 reduce 函数中写入我们的算法,然后打成 jar 包我们就可以在 Hadoop 运行应用程序了。 在这里我介绍一款软件:Mahout. Mahout 是阿帕奇里的一个开源项目,他是 Hadoop(mapreduce 框架)上层的一个应用 程序。在 Mahout 中,程序开发人员已经将关于聚类、分类、回归、关联算法写好并打成 了可以在 Hadoop 上运行的 jar 包。我们数据分析人员只需给函数传入参数,就可以使用 Mahout 上支持的算法。 我使用了 0.6 和 0.9 两个版本的 Mahout 进行了关联运算,感觉非常方便。据说,Mahout 将支持 Hadoop(Yarn 框架)。 Map/Reduce 程序基于 HDFS 文件存储到 HDFS 后以 SequenceFile 格式的文件保存在 HDFS 中,其形式是<键,值>, 键为文件名,值为文件内容。 而基于 HDFS 的 Map 函数的入参为上述的键(文件名)、值(文件的内容) Map(Key ,Value) Map/Reduce HDFS SequenceFile Share Knowledge Share Happiness 工欲善其事必先利其器 7 KEY:http://192.168.0.249/user/sn/1.txt block1 Value: 2001 25 26 14 25 14 14 2002 14 25 36 25 24 25 2003 14 25 35 14 25 14 MAP KEY:2001 Value: 26 KEY:2002 Value: 36 KEY:http://192.168.0.249/user/sn/1.txt block2 Value: 2001 14 36 15 14 25 14 2002 14 28 40 29 24 25 2003 14 45 10 14 25 14 MAP KEY:2001 Value: 36 Value: 40 KEY:2002 KEY:2001 Value: 26 36 Value: 36 40 KEY:2002 上述两个结果合并后 Share Knowledge Share Happiness 工欲善其事必先利其器 8 注:上述例子为求每年一月一号温度最大值(文档给出了那天的不同时间的观察值)(2001 表示 2001 年,15 代表 15 摄氏度) 2.2 YARN 编程框架 只处在了解阶段,暂时还没掌握,很快会掌握的。 3.HBase Hbase 是 NoSQL 数据库。他能储存这种形式的数据: 上述记录在 RDBMS 中是无法实现的。Hbase 是分布式数据库,他的底层依赖于 HDFS。 我们知道,HDFS 是一次写入多次读取,并且读取速度相当的慢的分布式文件储存系统。但 是,基于 HDFS 的 Hbase 速度是非常快的。 HBase 的框架: Reduce KEY:2001 KEY:2001 Value: 36 Value: 40 Share Knowledge Share Happiness 工欲善其事必先利其器 9 我们只看 Store 部分: Store 是 Hbase 的核心对象。分为 MemStore 和 StoreFile。 MemStore 是用于储存用户进行操作及相应的数据的缓存,当缓存空间满了,会将用户进 行操作及相应的数据存入 StoreFile 文件中。数据的增删改都是处理 StoreFile。StoreFile 中管理的文件格式是 SequenceFile 格式。这样就解决了高并发写操作的难题。 其操作和传统的 RDBMS 有类似之处,有 SQL 基础就可以很快掌握。 Share Knowledge Share Happiness 工欲善其事必先利其器 10 Map/Reduce 程序基于 Hbase 此时的 map 函数的 key 值是数据库表的行,处理过程和 MapReduce 从 HDFS 处理文件 的过程类似。 总结 不足之处: 1.没有真正的写过一个关于大数据分析的程序 2.在源码分析上的功夫花费的较少,只是停留在文字描述,有的东西不能真正理解 3.过度依赖 Mahout Map/Reduce Hbase HDFS Share Knowledge Share Happiness 工欲善其事必先利其器 11 未来工作的目标: 1.掌握 Yarn 框架 2.深入的学习 Hadoop,包括 HDFS、Hbase、Yarn、Hive,莫在浮沙筑高台! 我虽然是数学系毕业的,可能对机器学习算法感觉不到新鲜,但是,这些数学的思想一旦 运用到大数据分析上,立马就表现出新的生命。通过这一个多月的学习,我见识到了‘旧的 事务’->map/reduce,我也看到了‘新的事务’->Yarn。这些东西都来源于大数据产业。 这些东西扩大了我的视野,打开了我的视界,让我觉得整个世界变得更加宽广,打开了我人 生的新世界。我只有不断的学习,不断的更新知识才能在未来有更宽广的视界,更宽广的世 界! 由于本人水平很有限,必定存在较多的理解或者认识错误,请多多批评指正! 知识 知识增长量 年龄 年龄增长量
还剩10页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

nw37

贡献于2015-01-08

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf