1、Hadoop培训(一),郝保 2012-08-23 系统开发部,主要内容,Hadoop介绍 Hadoop现状 MapReduce 引擎 HDFS文件系统 Hadoop相关,Hadoop介绍,作者:Doug Cutting 纯Java编写的开源系统,能够实现大规模的计算 Nutch搜索引擎里面的一个模块。 受Google三篇论文的启发,详细网上看-MapReduce GFS Bigtablemapreduce mapreduceGFS HDFSBigtable Hbase,Hadoop现状,奇虎360:Hadoop存储软件管家中软件,使用CDN技术将用户请求引到最近的Hadoop集群并进行下载
2、京东、百度:存储、分析日志、数据挖掘 广告类公司:存储日志,通过协调过滤算法为客户推荐广告 Yahoo:垃圾邮件过滤 华为:云计算平台 Facebook:日志存储,实时分析 淘宝、阿里:国内使用Hadoop最深入的公司 亚马逊,HDFS文件系统,NameNode节点是就是HDFS的大脑。想了解HDFS文件系统,必须了解大脑结构。 从NameNode节点开始。NameNode类中,关于HDFS文件系统的存储和管理都交给了FSNamesystem负责。FSNameSystem层次结构 INode: 它用来存放文件及目录的基本信息:名称,父节点、修改时间,访问时间以及UGI信息等。 INodeFil
3、e: 继承自INode,除INode信息外,还有组成这个文件的Blocks列表,重复因子,Block大小 INodeDirectory:继承自INode,此外还有一个INode列表来组成文件或目录树结构 Block(BlockInfo):组成文件的物理存储,有BlockId,size ,以及时间戳 BlocksMap: 保存数据块到INode和DataNode的映射关系 FSDirectory:保存文件树结构,HDFS整个文件系统是通过FSDirectory来管理 FSImage:保存的是文件系统的目录树 FSEditlog: 文件树上的操作日志 FSNamesystem: HDFS文件系统管
4、理,读文件过程,写文件的过程,HDFS文件操作,格式为:hadoop fs -cmd cmd的命名通常与unix对应的命令名相同。例如,文件列表命令: hadoop fs -ls 1、添加目录和文件 HDFS有一个默认的工作目录 /user/$USER,其中$USER是你的登录用户名。不过目录不会自动建立,我们现在用mkdir建立它,我使用的是chen作为用户名。 hadoop fs -mkdir /user/haobao (hadoop的mkdir命令会自动创建父目录,类似于带-p的unix命令) hadoop fs -put example.txt . 最后一个参数是句点,相当于放入了默认
5、的工作目录 当你把文件放入HDFS上后,你就可以运行Hadoop程序来处理它。 2、检索文件 get命令与put命令相反,它从HDFS复制文件回到本地文件系统。 hadoop fs -get example.txt . 复制到本地的当前工作目录中。 另一种是显示数据,用cat hadoop fs -cat example.txt 3、删除文件 rm命令 hadoop fs -rm example.txt 也可以用来删除空目录,MapReduce 引擎,MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,和他们的主要思想,
6、都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。,实例,写MapReduce程序的步骤:1.把问题转化为MapReduce模型2.设置运行的参数3.写map类4.写reduce类例子:统计单词个数Hello my name is hao bao What is your name,Hello 1 my 1 name 2 Is 2
7、What 1 your 1 hao 1 Bao 1,Map与Reduce分析,1.Map端一行行读文件,程序转化为中间Key/Value.hello my name is hao bao - hello 1,my 1,name 1, is 1, hao 1, bao 1What is your name -What 1, is 1, your 1,name 1 2.Reduce端相同的key肯定会在一起。经过Reduce方法处理后,形成最终的key/Value.name 1,name 1-name 2;,运行步骤,安装插件,运行。 1)创建输入文件 word.txt文件 2)运行插件 3)查看
8、输出文件hadoop fs text /path 运行jar包,部署到hadoop 1)打成jar包。 2)创建一个word.txt文件 3)把word.txt文件传到HDFS上面 4)执行hadoop jar 5)查看输出文件,MapReduce执行流程,Hadoop相关,Common 一组分布式文件系统和通用I/O的组件与接口(序列化、Java RPC和持久化数据结构) MapReduce分布式数据处理模型和执行环境,运行于大型商用机集群 HDFS分布式文件系统,运行于大型商用机集群 Pig一种数据流语言和运行环境,用于检索非常大的数据集。Pig运行在MapReduce和HDFS集群上 Hive一个分布式、按列存储的数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言用以查询数据。 Hbase一个分布式、按列存储数据库。Hbase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询 Sqoop在数据库和HDFS之间高效传输数据的工具,环境搭建参考:,http:/