hadoop

上传人:suns****4568 文档编号:90659363 上传时间:2019-06-14 格式:PPT 页数:21 大小:2.54MB
返回 下载 相关 举报
hadoop_第1页
第1页 / 共21页
hadoop_第2页
第2页 / 共21页
hadoop_第3页
第3页 / 共21页
hadoop_第4页
第4页 / 共21页
hadoop_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《hadoop》由会员分享,可在线阅读,更多相关《hadoop(21页珍藏版)》请在金锄头文库上搜索。

1、云计算 Hadoop(Map/Reduce框架) Hive,云计算,是什么 (what),分布式计算,网格计算,并行计算,透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。 “云计算”(Cloud Computing)是分布式计算(Distributed Computing)、并行计算(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科

2、学概念的商业实现。,网格计算是分布式运算的进化型,通过网络连接计算机进行分布式计算。把大型计算分成大量的计算单元,并行处理。,大量计算机“独立”进行计算来共同完成一个大型计算。上一个任务包的结果未返回或者是结果处理错误,对下一个任务包的处理没有什么影响。,多台计算机并行进行计算来共同完成一个大型计算。其中每个任务都是必要的,就是每个任务包都要处理,而且计算结果相不影响,为什么 (why),海量数据计算,海量数据存储,速度快,节省硬件资源,对于海量的数据,单一计算的或者昂贵的大型计算机总会有缺陷,最明显的是当数据量随时间而增大时,一台机器是不能扩展的。这就需要可扩展的云计算计算机集群来处理。,存

3、储和计算类似,对于海量的、随时增长的数据,需要一个可靠并可扩展的计算机集群来进行存储。,云计算是大量计算机来运行一个大型运算,效率可以随着机器的增加而线性增长,速度快。而且计算机集群中可以都是廉价计算机,大大节省了硬件资源。,怎么做 (how),Map/Reduce,hadoop,HDFS,hive,MapReduce是一个最先由Google提出的分布式计算软件构架,它可以支持大数据量的分布式处理。这个架构最初起源于函数式程式的map和reduce两个函数组成。,一个实现MapReduce的java编写的框架。目前已达到稳定、安全、速度快、实用。,Hadoop 的分布式文件系统。可对文件进行分

4、布式存储。,提供类sql 的语句(HQL)来实现MapReduce 操作,Hadoop,是什么(what),云计算的实现,Map/Reduce 框架,Hadoop 是从apache nutch 项目中剥离出来的,实现了googleGFS (通过HDFS实现)和 MapReduce算法的分布式计算平台。,MapReduce架构是用来解决大数据量的分布式计算问题,然后把计算后的结果放入文件系统或者数据库中。 “Map”:主节点读入输入数据,把它分成可以用相同方法解决的小数据块(这里是一个分而治之的思想),然后把这些小数据块分发到不同的工作节点上(worker nodes)上,每一个工作节点(wor

5、ker node)循环做同样的事,这就形成了一个树行结构(分布式计算中的很多模型都和图论有关,pageRank也是),而每一个叶子节点有来处理每一个具体的小数据块,再把这些处理结果返回给父节点。 “Reduce”:主节点得到所有子节点的处理结果,然后把所有结果组合并且返回到输出。 MapReduce的一个特点是可以用map和reduce方法来处理分布式计算的问题(这里有一个移动计算而不是移动数据的概念,因为移动计算比移动数据代价更小)。这里的每一个mapping操作都是相对独立的,所有的maps都是并行运行的,虽然实践中会受到数据源和cpu个数的影响。同样的,这里用一个reducer集合来执行

6、reduce操作,所有带有相同key的map输出会聚集到同一个reducer。虽然这个过程看上去没有串行计算来得高效,但是MapReduce能够处理一般服务器所不能处理的大数据量处理问题。大型的服务器集群可以在短时间内处理petabyte数据量的排序问题。而并行处理可以提供部分容错和出错恢复的功能。当一个mapper或reducer失效时,整个工作就会被重新安排,从而不会影响工作的连续性。,提供分布式存储解决方案,采用Master/Slave 结构。NameNode 维护集群内的元数据,对外提供创建、打开、删除和重命名文件或目录的功能。DataNode 存储数据,并提负责处理数据的读写请求。D

7、ataNode定期向NameNode 上报心跳,NameNode 通过响应心跳来控制DataNode。,为什么 (why),目前得到最广泛应用的云计算框架,国内应用hadoop 的公司:,国外应用hadoop 的公司: Facebook,yahoo! 等,怎么做 (how),Hadoop 集群搭建,一台机器做 NameNode,master 和jobTracker。N台机机器做DataNode ,slave,taskTracker。 实现ssh 无密码登录 设置防火墙 在各个机器上分别安装和配置hadoop cloudera,Hadoop 的 MapReduce 编程,官方例子 -WordCo

8、unt 的解读:,public class WordCount /* * MapReduceBase类:实现了Mapper和Reducer接口的基类(其中的方法只是实现接口,而未作任何事情) * Mapper接口: * WritableComparable接口:实现WritableComparable的类可以相互比较。所有被用作key的类应该实现此接口。 * Reporter 则可用于报告整个应用的运行进度,本例中未使用。 * */ public static class Map extends MapReduceBase implements Mapper /* * LongWritable

9、, IntWritable, Text 均是 Hadoop 中实现的用于封装 Java 数据类型的类,这些类实现了WritableComparable接口, * 都能够被串行化从而便于在分布式环境中进行数据交换,你可以将它们分别视为long,int,String 的替代品。 */ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); /* * Mapper接口中的map方法: * void map(K1 key, V1 value, OutputCollector o

10、utput, Reporter reporter) * 映射一个单个的输入k/v对到一个中间的k/v对 * 输出对不需要和输入对是相同的类型,输入对可以映射到0个或多个输出对。 * OutputCollector接口:收集Mapper和Reducer输出的对。 * OutputCollector接口的collect(k, v)方法:增加一个(k,v)对到output */ public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException Stri

11、ng line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens() word.set(tokenizer.nextToken(); output.collect(word, one); ,public static class Reduce extends MapReduceBase implements Reducer public void reduce(Text key, Iterator values, OutputColl

12、ector output, Reporter reporter) throws IOException int sum = 0; while (values.hasNext() sum += values.next().get(); output.collect(key, new IntWritable(sum); public static void main(String args) throws Exception /* * JobConf:map/reduce的job配置类,向hadoop框架描述map-reduce执行的工作 * 构造方法:JobConf()、JobConf(Clas

13、s exampleClass)、JobConf(Configuration conf)等 */ JobConf conf = new JobConf(WordCount.class); conf.setJobName(“wordcount“); /设置一个用户定义的job名称 conf.setOutputKeyClass(Text.class); /为job的输出数据设置Key类 conf.setOutputValueClass(IntWritable.class); /为job输出设置value类 conf.setMapperClass(Map.class); /为job设置Mapper类

14、conf.setCombinerClass(Reduce.class); /为job设置Combiner类 conf.setReducerClass(Reduce.class); /为job设置Reduce类 conf.setInputFormat(TextInputFormat.class); /为map-reduce任务设置InputFormat实现类 conf.setOutputFormat(TextOutputFormat.class); /为map-reduce任务设置OutputFormat实现类 /* * InputFormat描述map-reduce中对job的输入定义 * s

15、etInputPaths():为map-reduce job设置路径数组作为输入列表 * setInputPath():为map-reduce job设置路径数组作为输出列表 */ FileInputFormat.setInputPaths(conf, new Path(args0); FileOutputFormat.setOutputPath(conf, new Path(args1); JobClient.runJob(conf); /运行一个job ,hive,是什么 (what),Facebook 的开源项目Hive 在Hadoop 之上提供了类似于SQL 的查询语言(HQL),使不

16、熟悉Map/Reduse 的用户很方便的利用SQL语言查询,汇总,分析数据。Hive后台分析HQL语句,并生成job来执行Map/Reduse而map/reduce开发人员可以把自己写的mapper 和reducer 作为插件来支持Hive 做更复杂的数据分析。,一个类sql的hadoop mapreduce框架,为什么 (why),写HQL的效率远高于写MapReduce的效率,方便熟悉sql 的人使用,使MapReduce 更加类似关系型数据库,HQL(HIVE Sql) 语法基本和sql 语法相同,但由于数据结构不同,且面向方向不同,也存在很多不同支持。但熟悉sql的程序员肯定一见如故。,如果你对sql 很熟悉,hive 会很快入手。但这并不是说hive 就是个数据库软件。它和数据库软件还是有很大区别的,首先其不是关系型数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号