• 1. Introduction to Hadoophttp://hadoop.apache.org
  • 2. ContentsWhat is Hadoop1What Hadoop Includes2Why is Hadoop3How to use Hadoop4
  • 3. What is HadoopApache Hadoop 是一个用java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,它可以让应用程序支持上千个节点和PB级别的数据。
  • 4. Hadoop 组成Hadoop corePIGHBaseZooKeeper
  • 5. Hadoop 组成Hadoop core Hadoop的核心子项目,提供了一个分布式文件系统(HDFS)和支持MapReduce的分布式计算。 HBase 建立在Hadoop内核之上,提供可靠的,可扩展的分布式数据库。 ZooKeeper 一个高效的,可扩展的协调系统。分布式应用可以使用ZooKeeper来存储和协调关键共享状态。 PIG 建立于Hadoop内核之上,是一种支持并行计算运行框架的高级数据流语言。
  • 6. Hadoop coreMapReduce Map:任务的分解 Reduce:结果的汇总 两大核心设计HDFS NameNode DataNode Client
  • 7. MapReduce
  • 8. HDFS
  • 9. HDFSNameNode 可以看作是分布式文件系统中的管理者,存储文件系统的meta-data,主要负责管理文件系统的命名空间,集群配置信息,存储块的复制。 DataNode 是文件存储的基本单元。它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报告给NameNode。 Client 就是需要获取分布式文件系统文件的应用程序。
  • 10. HDFS操作举例文件写入: 1. Client向NameNode发起文件写入的请求。 2. NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。 3. Client将文件划分为多个文件块,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。   文件读取: 1. Client向NameNode发起文件读取的请求。 2. NameNode返回文件存储的DataNode的信息。 3. Client读取文件信息。 文件块复制: 1. NameNode发现部分文件的文件块不符合最小复制数或者部分DataNode失效。 2. 通知DataNode相互复制文件块。 3. DataNode开始直接相互复制。
  • 11. HBase-数据模型每个数据行都包括一个可排序的关键字,和任意数目的列 HBase利用的是column-oriented列导向存储机制,不同于传统的row-oriented行导向存储机制 对于Null值的存储是不占用任何空间的 最适合使用HBase存储的数据是非常稀疏的数据 所有数据库更新操作都有时间戳。HBase对每个数据单元,只存储指定个数的最新版本。
  • 12. HBase-概念模型 一个表格是一些行的集合,每行包含一个行关键字(和一个可选的时间戳),和一些可能有数据的列(稀疏),如下图:
  • 13. HBase-物理模型 在概念上表格是一个稀疏的行/列矩阵,但是在物理上,它们按照列存储,上面“概念模型”中的表格在物理上的存储方式如下所示:
  • 14. ZooKeeperWhat is ZooKeeper? 一个高效的,可扩展的协调系统 Why is ZooKeeper? 保证用户读取的数据是最新的 当用户正在查看的数据被修改时,保证用户会被及时告知 保证来至一个用户的所有请求会被按顺序处理 保证所有用户得到的数据是一致的
  • 15. ZooKeeper-Data ModelZooKeeper提供的命名空间和一般的文件系统是极为相似的,除了ZooKeeper的文件系统的每个节点(node)既可以包含数据又可以包含子节点 ZooKeeper提供暂时节点的概念,这些节点随着创建他们的会话的结束而结束。 ZooKeeper允许用户在节点上设置“监视”机制,当节点的内容被改变时,“监视”机制会告知用户
  • 16. PIGPig是SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能 支持的运算 算数符号:+,-,*,/ 多种数据类型:string,int,float,long等 比较运算:==, !=, >, >=, <, <=,eq, neq, gt, gte, lt,lte,matches 复杂的数据类型:bag,tuple,map 相关运算:FILTER,GROUP BY,ORDER,DISTINCT,UNION,JOIN,FOREACH ... GENERATE 数据统计:COUNT,SUM,AVG,MIN,MAX等。
  • 17. PIG(Cont.)pig支持的原始类型数据: int,long,float,double,char数组,byte数组 pig内部的数据类型: bag:一个tuple的集合,表示方式:{<1,2>,<3,4>} tuple:一个排序的数组,表示方式: map:一个key,value的map数据,表示方式['pig':<'load','store'>,'web':'hadoop.apache.org'] atom:单一的原始类型数据,作为string存储,也能转化成数值类型.表示方式:'apache.org'或'2.3'. 数据表示方式: t = < 1, {<2,3>,<4,6>,<5,7>}, ['apache':'hadoop']> 在上面的例子中一个tuple被引用到t下,因此t有3个域f1,f2,f3,我们可以通过t.f1或t.$0访问到1,通过t.f2或t.$1访问到{<2,3>,<4,6>,<5,7>},通过t.f3或t.$2访问到['apache':'hadoop'].
  • 18. Mahout&Hive Mahout(看象人) 一批机器学习库,用于驱动Hadoop。 HIVE(蜂房) Hive 是搭建在Hadoop之上的数据仓库基础,并提供了一些工具,使得对Hadoop文件中海量数据的归纳、特殊查找和分析更为容易。
  • 19. Why is Hadoop可扩展。不论是存储的可扩展还是计算的可扩展都是Hadoop的设计根本。 经济。框架可以运行在任何普通的PC上。 可靠。分布式文件系统的备份恢复机制以及MapReduce的任务监控保证了分布式处理的可靠性。 高效。分布式文件系统的高效数据交互实现以及MapReduce结合Local Data处理的模式,为高效处理海量的信息作了基础准备。
  • 20. How to Use Hadoop环境: 7台普通的机器,操作系统都是linux,JDK必须是1.5以上 ,7台机器的机器名务必不同。 部署考虑: 对于Hadoop的集群来说,可以分成两大类角色,即Master和Slave,前者主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行,后者配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。 现取一台为Master,六台为Slave
  • 21. How to Use Hadoop(实验步骤)在所有的机器上都建立相同的目录,也可以就建立相同的用户,以该用户的home路径来做hadoop的安装路径。 下载Hadoop,先解压到Master上。 解压后进入conf目录,主要需要修改以下文件:hadoop-env.sh,hadoop-site.xml,masters,slaves。 建立Master到每一台Slave的ssh受信证书。 将Master上的Hadoop通过scp拷贝到每一个Slave相同的目录下,根据每一个Slave的Java_HOME的不同修改其hadoop-env.sh。
  • 22. How to Use Hadoop(实验步骤) Cont.修改Master上/etc/profile: 新增以下内容:具体的内容根据你的安装路径修改,这步只是为了方便使用 export HADOOP_HOME=/home/wenchu/hadoop-0.17.1 export PATH=$PATH:$HADOOP_HOME/bin   修改完执行 source /etc/profile来使得其生效。 在Master上执行Hadoop namenode –format,这是第一需要做的初始化
  • 23. How to Use Hadoop(实验步骤) Cont.然后执行Master上的start-all.sh 检查Master的logs目录看看Namenode日志以及JobTracker日志是否正常启动 检查Slave的logs目录看看Datanode日志以及TaskTracker日志是否正常。 以上步骤就可以启动Hadoop的分布式环境
  • 24. Thank You !