mapjoin与reducejoin
hdfs的副本的配置修改hdfs-site.xml文件<property><name>dfs.namenode.secondary.http-address</name><value>hd-02:50090</value></property>需要同步到其它机器:scp hdfs-site.xml hd-02:$PWDhadoop启动方式1)启动hdfs集群$ start-dfs.sh2)启动yarn集群$ start-yarn.sh3)启动hadoop集群$ start-all.sh大数据干什么的?1)海量数据的存储(mysql/orcale)分布式文件系统hdfsdfs->Hdfsmapreduce->mapreducebigtable->hbase分而治之!2)海量数据的计算分布式计算框架mapreduce配置checkpoint时间<property><name>dfs.namenode.checkpoint.period</name><value>7200</value></property>hadoop-2.8.4安装部署1)准备工作设置主机名:vi /etc/hostname注意:需要重启 reboot设置映射:vi /etc/hosts设置免密登录:ssh-keygenssh-copy-id hd-01...2)安装jdk上传安装包CRT:alt+p解压tar -zxvf .tar.gz配置环境变量export JAVA_HOME=/root/hd/jdk1.8.0_141export PATH=$PATH:$JAVA_HOME/bin注意:需要source /etc/profile分发jdkscp jdk hd-02:/root/hdscp /etc/profile hd-02:/etc/source /etc/profile3)安装hadoop上传安装包alt + p解压tar -zxvf .tar.gz修改配置文件core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml配置环境变量export HADOOP_HOME=/export PATH=$PAYH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin修改slaves文件加入从节点格式化namenodehadoop namenode -format启动:start-all.shhadoop-MapReduce官方:Apache?Hadoop?项目开发了用于可靠,可扩展的分布式计算的开源软件。Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。该库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。阿里的Flink(9000万欧元) BlinkMapReduce分布式计算程序的编程框架。基于hadoop的数据分析的应用。MR优点:1)框架易于编程2)可靠容错(集群)3)可以处理海量数据(1T+ PB+) 1PB = 1024TB4)拓展性,可以通过动态的增减节点来拓展计算能力MapReduce的思想数据:海量单词hello rebahello mimihello liyamimi big需求:对每个单词出现的次数统计出来思想:分而治之!解决方式:1)每个单词记录一次(map阶段)<hello,1> <reba,1> <hello,1> <mimi,1>2)相同单词的key不变,value累加求和即可(reduce阶段)<hello,1+1+1>对数据进行计算对wordcount例子程序分析1)整个wordcount分为几个阶段?三个2)有哪几个阶段?mapperreducerdriver3)每个阶段有什么作用mapper:对数据进行打散<hello,1><mimi,1>reducer:对数据进行聚合<hello,1+1+1>driver:提交任务4)详解Mapper阶段:将数据转换为String对数据进行切分处理把每个单词后加1输出到reducer阶段Reducer阶段:根据key进行聚合输出key出现总的次数Driver阶段:创建任务关联使用的Mapper/Reducer类指定mapper输出数据的kv类型指定reducer输出的数据的kv类型指定数据的输入路径与输出路径提交hadoop数据类型我们看到的wordcount程序中的泛型中的数据类型其实是hadoop的序列化的数据类型。为什么要进行序列化?用java的类型行不行?Java的序列化:Serliazable太重。hadoop自己开发了一套序列化机制。Writable,精简高效。海量数据。hadoop序列化类型与Java数据类型Java数据类型 Hadoop序列化类型int IntWritablelong LongWritableboolean BooleanWritablebyte ByteWritablefloat FloatWritabledouble DoubleWritableString Textwordcount测试1)本地模式2)集群模式hadoop jar .jar wordcount /wc/in /wc/out案例分析需求:运营商流量日志10086计算每个用户当前使用的总流量思路?总流量 = 上行流量+下行流量三个字段:手机号 上行流量 下行流量技术选型:PB+数据分析:海量数据(存储hdfs)海量数据计算(分布式计算框架MapReduce)小文件优化如果企业中存在海量的小文件数据TextInputFormat按照文件规划切片,文件不管多小都是一个单独的切片,启动maptask任务去执行,这样会产生大量的maptask,浪费资源。优化手段:小文件合并大文件,如果不动这个小文件内容。自定义分区需求:统计结果进行分区,根据手机号前三位来进行分区总结:1)自定义类继承partitioner<key,value>2)重写方法getPartition()3)业务逻辑4)在driver类中加入setPartitionerClass5)注意:需要指定setNumReduceTasks(个数=分区数+1)排序需求:每个分区内进行排序?总结:1)实现WritableComparable接口2)重写compareTo方法combineTextInputFormat设置切片的大小 maptaskcombiner 合并1)combiner是一个组件注意:是Mapper和Reducer之外的一种组件但是这个组件的父类是Reduer2)如果想使用combiner继承Reduer即可3)通过编写combiner发现与reducer代码相同只需在driver端指定setCombinerClass(WordCountReduer.class)注意:前提是不能影响业务逻辑<a,1><c,1> <a,2><a,1> = <a,3>数学运算: (3 + 5 + 7)/3 = 5(2 + 6)/2 = 4不进行局部累加:(3 + 5 + 7 + 2 + 6)/5 = 23/5进行了局部累加:(5+4)/2 = 9/2=4.5 不等于 23/5=4.6数据压缩为什么对数据进行压缩?mapreduce操作需要对大量数据进行传输压缩技术有效的减少底层存储系统读写字节数,hdfs。压缩提高网络带宽和磁盘空间效率。数据压缩节省资源,减少网络I/O。通过压缩可以影响到mapreduce性能。(小文件优化,combiner)代码角度进行优化。注意:利用好压缩提高性能,运用不好会降低性能。压缩 -》 解压缩mapreduce常用的压缩编码压缩格式 是否需要安装 文件拓展名 是否可以切分DEFAULT 直接使用 .deflate 否bzip2 直接使用 .bz2 是Gzip 直接使用 .gz 否LZO 需要安装 .lzo 是Snappy 需要安装 .snappy 否性能测试压缩格式 原文件大小 压缩后大小 压缩速度 解压速度gzip 8.3GB 1.8GB 20MB/s 60MB/sLZO 8.3GB 3GB 50MB/s 70MB/sbzip2 8.3GB 1.1GB 3MB/s 10MB/s数据压缩发生阶段数据源-》数据传输 数据压缩mappermap端输出压缩-》数据传输 数据压缩reducerreduce端输出压缩-》数据传输 数据压缩结果数据设置map端输出压缩:1)开启压缩conf.setBoolean2)设置具体压缩编码conf.setClass设置reduce端输出压缩:1)设置reduce输出压缩FileOutputFormat.setCompressOutput2)设置具体压缩编码FileOutputFormat.setOutputCompressorClasshive数据仓库:mapreduce 用hsql处理大数据压缩编码使用场景1-> Gzip压缩方式压缩率比较高,并且压缩解压缩速度很快;hadoop自身支持的压缩方式,用gzip格式处理数据就像直接处理文本数据是完全一样的;在linux系统自带gzip命令,使用很方便简洁。不支持split使用每个文件压缩之后大小需要在128M以下(块大小)200M-》设置块大小2->LZO压缩方式压缩解压速度比较快并且,压缩率比较合理;支持split在linux系统不可以直接使用,但是可以进行安装。压缩率比gzip和bzip2要弱,hadoop本身不支持。需要安装。3->Bzip2压缩方式支持压缩,具有很强的压缩率。hadoop本身支持。linux中可以安装。压缩解压缩速度很慢。4->Snappy压缩方式压缩解压缩速度很快。而且有合理的压缩率。不支持split数据倾斜reduce joinHadoop中有哪些组件?HDFS:数据的分布式存储MapReduce:数据的分布式计算Yarn:资源调度(cpu/内存...)Yarn节点:resourceManagernodeManager (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |