Hadoop培训总结
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WordCount: MapReduce版"Hello World",
分布式计算-- MapReduce
WordCount代码解析--Map
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); //map函数 public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } }
Hive(数据仓库工具)
建表语句解析:
create EXTERNAL table test(id int,cont string) --表结构 row format delimited fields terminated by ‘\t‘ --列分隔符 lines terminated by ‘\n’ ---行分隔符 stored as textfile --HDFS文件格式 location ‘/user/admin/test’; --HDFS文件路径
ห้องสมุดไป่ตู้
分布式计算-- MapReduce
WordCount代码解析—Main主函数
public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); //hdfs文件路径 FileOutputFormat.setOutputPath(conf, new Path(args[1])); //结果输出路径 JobClient.runJob(conf); }
Hive(数据仓库工具)
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的 数据文件映射为一张数据库表,并提供简单的sql查询功能,可以 将sql语句转换为MapReduce任务进行运行。 Hive支持分区、支持等值多表join ,大大简化了MapReduce 的开发。 备注:Hive需要与关系型数据库连接。由于Hive不做存储, 它的数据来源于HDFS,所以它的表结构、分区等Hive的元数据 需要存储在关系型数据库里。
Hive:构建在MapRudece之上的数据仓库软件包 HBase:Key-value数据库 ZooKeeper:高可靠性分布式协调系统 Oozie:负责MapReduce作业调度 Pig:Pig是架构在Hadoop之上的高级数据处理层。Pig Latin语言为 编程人员提供了更直观的定制数据流的方法。
架构
分布式文件系统--HDFS
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。 基本概念: 数据块(block) HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数 据块。 HDFS中的文件是被分成64M一块的数据块存储的。 元数据节点(Namenode)和数据节点(datanode) 元数据(Metadata):维护HDFS文件系统中文件和目录的信息。 元数据节点: Namenode是一个中心服务器,单一节点,负责管理文件系统 的名字空间(namespace)以及宠户端对文件的访问。一个集群中只有一台 Namenode 数据节点:文件系统中真正存储数据的地方
Dadoop大数据培训总结
大数据概述
大数据典型应用
产品广告推荐
查询操作、点击操作汇总数据分析广告推荐
大数据应用已经与我们生活联系越来越紧密。不止 互联网行业,金融行业、政府、大型企业都已经有了大 数据成型的应用。
Dadoop主要组件
Hadoop主要组件包含:
HDFS:Hadoop分布式文件系统 MapReduce:针对大数据的灵活的并行数据处理框架
Hive缺陷:执行延时较大,不适合实时查询业务
HBase(分布式的列数据库)
建立的HDFS之上,提供高可靠性、高性能、列存储、 可伸缩、实时读写的数据库系统。 列数据库优点: 1.高效的储存空间利用率 同一类型的列存储在一起 2.不可见索引 列式数据库由于其数据的每一列都按照选择性进行排 序
适合应用: •适合大量的数据而不是小数据 •实时加载数据仅限于增加(删除 和更新需要解压缩Block 然后计 算然后重新压缩储存)
分布式文件系统--HDFS
分布式文件系统--HDFS
HDFS具备如下特点:
高容错(fault-tolerant) 故障的检测和自动快速恢复是HDFS主要功能。 HDFS每个数据块默认情况下有三个备份,第一个副本放在本地节点,将第二 个副本放到本地机架上的另外一个节点而将第三个副本放到不同机架上的节点。 由于每个块的大小相同,当HDFS发现块异常,整块复制的性能很高。 部署在低廉的(low-cost)硬件上
Hadoop采用Java开发,支持JVM的系统即可部署Hadoop。
高吞吐量(high throughput) HDFS放宽了POSIX的要求可以实现流的形式访问文件系统中的数据。
分布式文件系统--HDFS
分布式计算-- MapReduce
MapReduce采用"分而治之"的思想,把对大规模数据集的 操作,分发给一个主节点管理下的各个分节点共同完成,然后 通过整合各个节点的中间结果,得到最终结果。简单地说,
MapReduce就是"任务的分解与结果的汇总"。
Map:负责把任务分解成多个任务 Reduce:负责把分解后多任务处理的结果汇总起来 JobTracker: JobTracker是用于调度工作的,一个集群中 只有一台JobTracker
TaskTracker:用于执行工作的
分布式计算-- MapReduce
不适合应用 •不适合扫描小量数据 •不适合随机的更新 •不适合做含有删除和更新的实时操作
总结
Hadoop非常适合大数据的采集和分析。
HDFS用于数据文件分布式存储; MapReduce用于数据分布式运算; Hive可通过SQL语句 (自动转换成MR)查询HDFS文件; Hbase是建议在HDFS之上,实时读写的数据库系统。 Hadoop前期投资较大,5台以下的集群很难发挥出Hadoop的优势; Hadoop在使用过程中会遇到各式各样的问题,需要运维团队及时发 现问题、解决问题。
分布式计算-- MapReduce
WordCount代码解析--Reduce
public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { //reduce函数 public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } }
分布式计算-- MapReduce
WordCount代码解析--Map
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); //map函数 public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } }
Hive(数据仓库工具)
建表语句解析:
create EXTERNAL table test(id int,cont string) --表结构 row format delimited fields terminated by ‘\t‘ --列分隔符 lines terminated by ‘\n’ ---行分隔符 stored as textfile --HDFS文件格式 location ‘/user/admin/test’; --HDFS文件路径
ห้องสมุดไป่ตู้
分布式计算-- MapReduce
WordCount代码解析—Main主函数
public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); //hdfs文件路径 FileOutputFormat.setOutputPath(conf, new Path(args[1])); //结果输出路径 JobClient.runJob(conf); }
Hive(数据仓库工具)
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的 数据文件映射为一张数据库表,并提供简单的sql查询功能,可以 将sql语句转换为MapReduce任务进行运行。 Hive支持分区、支持等值多表join ,大大简化了MapReduce 的开发。 备注:Hive需要与关系型数据库连接。由于Hive不做存储, 它的数据来源于HDFS,所以它的表结构、分区等Hive的元数据 需要存储在关系型数据库里。
Hive:构建在MapRudece之上的数据仓库软件包 HBase:Key-value数据库 ZooKeeper:高可靠性分布式协调系统 Oozie:负责MapReduce作业调度 Pig:Pig是架构在Hadoop之上的高级数据处理层。Pig Latin语言为 编程人员提供了更直观的定制数据流的方法。
架构
分布式文件系统--HDFS
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。 基本概念: 数据块(block) HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数 据块。 HDFS中的文件是被分成64M一块的数据块存储的。 元数据节点(Namenode)和数据节点(datanode) 元数据(Metadata):维护HDFS文件系统中文件和目录的信息。 元数据节点: Namenode是一个中心服务器,单一节点,负责管理文件系统 的名字空间(namespace)以及宠户端对文件的访问。一个集群中只有一台 Namenode 数据节点:文件系统中真正存储数据的地方
Dadoop大数据培训总结
大数据概述
大数据典型应用
产品广告推荐
查询操作、点击操作汇总数据分析广告推荐
大数据应用已经与我们生活联系越来越紧密。不止 互联网行业,金融行业、政府、大型企业都已经有了大 数据成型的应用。
Dadoop主要组件
Hadoop主要组件包含:
HDFS:Hadoop分布式文件系统 MapReduce:针对大数据的灵活的并行数据处理框架
Hive缺陷:执行延时较大,不适合实时查询业务
HBase(分布式的列数据库)
建立的HDFS之上,提供高可靠性、高性能、列存储、 可伸缩、实时读写的数据库系统。 列数据库优点: 1.高效的储存空间利用率 同一类型的列存储在一起 2.不可见索引 列式数据库由于其数据的每一列都按照选择性进行排 序
适合应用: •适合大量的数据而不是小数据 •实时加载数据仅限于增加(删除 和更新需要解压缩Block 然后计 算然后重新压缩储存)
分布式文件系统--HDFS
分布式文件系统--HDFS
HDFS具备如下特点:
高容错(fault-tolerant) 故障的检测和自动快速恢复是HDFS主要功能。 HDFS每个数据块默认情况下有三个备份,第一个副本放在本地节点,将第二 个副本放到本地机架上的另外一个节点而将第三个副本放到不同机架上的节点。 由于每个块的大小相同,当HDFS发现块异常,整块复制的性能很高。 部署在低廉的(low-cost)硬件上
Hadoop采用Java开发,支持JVM的系统即可部署Hadoop。
高吞吐量(high throughput) HDFS放宽了POSIX的要求可以实现流的形式访问文件系统中的数据。
分布式文件系统--HDFS
分布式计算-- MapReduce
MapReduce采用"分而治之"的思想,把对大规模数据集的 操作,分发给一个主节点管理下的各个分节点共同完成,然后 通过整合各个节点的中间结果,得到最终结果。简单地说,
MapReduce就是"任务的分解与结果的汇总"。
Map:负责把任务分解成多个任务 Reduce:负责把分解后多任务处理的结果汇总起来 JobTracker: JobTracker是用于调度工作的,一个集群中 只有一台JobTracker
TaskTracker:用于执行工作的
分布式计算-- MapReduce
不适合应用 •不适合扫描小量数据 •不适合随机的更新 •不适合做含有删除和更新的实时操作
总结
Hadoop非常适合大数据的采集和分析。
HDFS用于数据文件分布式存储; MapReduce用于数据分布式运算; Hive可通过SQL语句 (自动转换成MR)查询HDFS文件; Hbase是建议在HDFS之上,实时读写的数据库系统。 Hadoop前期投资较大,5台以下的集群很难发挥出Hadoop的优势; Hadoop在使用过程中会遇到各式各样的问题,需要运维团队及时发 现问题、解决问题。
分布式计算-- MapReduce
WordCount代码解析--Reduce
public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { //reduce函数 public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } }