• 1. 大纲Hadoop的简介 Map Reduce介绍 Hadoop执行步骤 Hadoop的安装和配置 应用情景分析
  • 2. 一、Hadoop的简介hadoop是做什么的? Hadoop为云计算平台提供了一种分布式存储和并行计算的能力。将大块的数据文件,如数据规模在G、T级别,进行切割并进行分布式存储;hadoop的mapreduce计算模型,将计算任务按照分割文件拆解并进行分布式并行计算,后再对计算结果进行汇总。
  • 3. 一、Hadoop的简介相关名词介绍: 使用Hadoop可以搭建起一个集群,在这个集群中有主节点NameNode,数据存储节点DataNode,管理任务的JobTracker,负责执行任务的TaskTracker。 ·NameNode:管理DataNode 和块的文件映射的元数据。 ·DataNode:存储数据块,响应来自 HDFS 客户机的读写请求,向NameNode发送心跳(包括块报告)。 ·JobTracker:负责任务的接受、调度、监控TaskTracker的分布式任务。 ·TaskTracker:负责map/reduce任务的执行
  • 4. 二、Map Reduce介绍 Map/reduce是一个用于大规模数据并行处理的编程模型 指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
  • 5. 三、Hadoop执行步骤
  • 6. 四、Hadoop的安装和配置前期准备: 创建ssh无密码访问,从NameNode到DataNode无密码访问 (1)执行ssh-keygen -t dsa;一路回车就行 (2)进入到.ssh目录,执行cp id_sda.pub authorized_keys (想要A机器无密码访问B机器,需要将A机器的密钥拷贝到B机器中) (3)然后将.ssh文件夹拷贝覆盖各个节点间.ssh目录 下载并解压hadoop-0.20.2.tar.gz;
  • 7. 四、Hadoop的安装和配置配置core-site.xml   fs.default.name   hdfs://DR710-69:9000/   hadoop.tmp.dir   /home/cloudetl/data/tmp  
  • 8. 四、Hadoop的安装和配置配置mapred-site.xml   mapred.job.tracker   DR710-69:9001   The host and port that the MapReduce job tracker runs   at.  If "local", then jobs are run in-process as a single map   and reduce task.  
  • 9. 四、Hadoop的安装和配置启动 分发配置好的hadoop到各个节点上,使用scp命令 启动hadoop前需要格式化namenode,命令:hadoop namenode -format 执行sh start-all.sh 启动hadoop集群
  • 10. 四、Hadoop的安装和配置验证 DFS集群信息:http://10.1.243.18:50070/dfshealth.jsp 查看JobTracker:http://10.1.252.69:50030/jobtracker.jsp
  • 11. 五、应用情景分析 上面主要介绍了Hadoop的原理和机制,下面将结合实际情况讨论hadoop的运算能力实现方法。(这里主要讨论用hadoop实现SQL语言的基本功能)
  • 12. 1、多个group并且多个sum和countHadoop实现思路如下: group分组可以用key来实现,当需要分组的记录有多个时,在key中指定多个字段。 Hadoop中有ObjectWritable和ArrayWritable可以组织数组数据,其类型必须是String、Enum或者Writable的subclass。而后者中的数据类型必须统一。 这样,key的类型就可以通过上面两种类型定义。而再定义key.comparator实现key的排序和比较。 通过map函数进行分组后,value就是每种key对应的记录的内容list。(需要count的字段简单写为1),value的类型也是数组,分别为不同字段 再在reduce函数中迭代list,将非分组字段进行sum后(如果是1就是count运算),输出的key为当前key,而value同样定义为数组,其中是每个字段的运算结果。 最后通过定义OutputFormat中的RecoderWriter来输出数据,就实现了该功能。
  • 13. 数据图例说明: 数据输入为”|”分隔的文本文件,第一到第四列分别为电话、性别、年龄和消费额,所表达的是根据性别和年龄分组求出消费总额和记录数的过程。
  • 14. 2、多种数据间的join连接 在上面的hadoop特性中已经大致介绍了这部分内容。这部分将结合实际说明。 数据图例: 图中所表达的是将两组many to one关系的数据(假定为为详单和用户资料)进行left join获得结果的过程。 文本文件同样使用”|”分隔符,左侧的详单数据字段依次为:号码、时长、品牌;右侧的用户资料字段依次为:号码、名称、年龄、性别、职业、大品牌、小品牌。两组数据通过号码进行连接。 两组数据通过不同的inputFormat和map,最终map输出转化为key一致的数据。由于是many to one,所以在reduce中需要做特殊处理(inner join,left join,right join,all join的处理也在这里进行),最终输出数据的key为null,value为两组数据字段的拼接。 推理可得:只要数据之间有着相同的key用来连接,不管多少组数据都可以只经过一次map/reduce运算获得连接结果。
  • 15. (本页无文本内容)
  • 16. 3、两组数据的union all操作 该操作其实和join有部分类似,都需要为两组数据分别准备inputFormat和map。只是在map的输出需要将key,value都格式化为一致,而在reduce侧做简单输出就可以了。
  • 17. 4、函数运算诸如case when这样的函数运算,这对于程序来说是非常好实现的,只需在map或者reduce函数中做相应处理就可以了。 由于脱离的SQL的限制,我们也可以让用户自定义公式,然后通过生成脚本语言代码或使用java公式解析器来进行动态运算,用以实现BI中的复杂逻辑。
  • 18. 谢谢!