Hadoop实战
文章平均质量分 68
缘定三石
这个作者很懒,什么都没留下…
展开
-
Shuffle阶段详细解读
Shuffer阶段说明shuffle阶段主要包括map阶段的combine、group、sort、partition以及reducer阶段的合并排序。Map阶段通过shuffle后会将输出数据按照reduce的分区分文件的保存,文件内容是按照定义的sort进行排序好的。Map阶段完成后会通知ApplicationMaster,然后AM会通知Reduce进行数据的拉取,在拉取过程中进行r原创 2017-09-02 21:25:01 · 7938 阅读 · 0 评论 -
MapReduce---连接操作--map端连接
在项目开发中,要实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志”join “产品信息”采用map端连接 原理:适用于大表 + 小表(载入内存)。map之前执行,加载文件到内存,形成map可以大大提高join操作的并发度,加快处理速度1、JoinMapperpackage hadoop.join.map;im原创 2017-08-18 22:29:31 · 672 阅读 · 0 评论 -
MapReduce数据倾斜解决方案2-- 自定义分区类---二次作业
数据倾斜:大量数据涌向到一个或者几个reduce,造成大量的reduce空闲。解决数据倾斜方案2:自定义分区类---二次作业下面以单次统计为例进行说明:1、DataLeanMapper1package hadoop.lean.partitioner;import org.apache.hadoop.io.IntWritable;import org.apach原创 2017-08-18 22:17:06 · 515 阅读 · 0 评论 -
MapReduce数据倾斜解决方案1--1、重新设计key---二次作业
数据倾斜:大量数据涌向到一个或者几个reduce,造成大量的reduce空闲。解决数据倾斜方案1:重新设计key---二次作业下面以单次统计为例进行说明:1、DataLeanMapper1 对key重新设计,增加随机数后缀package hadoop.lean.key;import org.apache.hadoop.io.IntWritable;import org.apa原创 2017-08-18 22:08:49 · 1261 阅读 · 3 评论 -
MapReduce----辅助排序(二次排序)
MapReduce框架在记录到达reduce之前按key进行记录排序,但是建所对应的值并没有排序。甚至在不同的执行轮次中,这些值的排序也是不固定的,应为它们来自不同的map任务且不同的map任务在不同的轮次中完成的时间也是不同的,一般来说,大多数MapReduce程序会避免reduce函数依赖于值进行排序,需要通过特定的方法对键进行排序和分组实现对值得排序。下面以统计每年的最高原创 2017-08-18 21:51:56 · 841 阅读 · 0 评论 -
Mapreduce---RandomSampler采样实现全排序
排序是MapReduce的核心技术,排序分为部分排序,全排序和二次排序。部分排序:调用默认的HashPartitioner,不需要操作,每个reduce聚合的key都是有序的。全排序:对reduce输出的所有的key实现排序 方法1:设置一个reducde 方法2:自定义分区类实现全排序原创 2017-08-18 21:31:59 · 3370 阅读 · 0 评论 -
MapReduce---自定义分区类实现全排序
排序是MapReduce的核心技术,排序分为部分排序,全排序和二次排序。部分排序:调用默认的HsshPartitioner,不需要操作,每个reduce聚合的key都是有序的。全排序:对reduce输出的所有的key实现排序 方法1:设置一个reducde 方法2:自定义分区类实现全排序下面以统计每年的最高气温为例进行示例:注原创 2017-08-18 21:23:36 · 853 阅读 · 0 评论 -
Intellij IDEA 中文输入法卡解决方法
环境为:jdk jre1.8.0_92 ,idea 2016.3.24(64),搜狗输入法7.0正式版。方法:1. 下载jdk2. 关掉idea,然后去idea安装路径下把jre64文件夹重命名掉,或删掉,最好是重命名掉,出问题后还能恢复过来,下面的图片中是重命名成jre_bak了;3. 把Java安装路径下的jre1.8.0_92拷贝过来,然后把文件夹重命名为jre64;4.原创 2017-08-09 17:49:52 · 4543 阅读 · 0 评论 -
新一代大数据技术架构
在讲新一代大数据技术架构前,先讲下大数据特征与大数据技术要解决的问题。1.大数据特征:“大量化(Volume)、多样化(Variety)、快速化(Velocity)、价值密度低(Value)”就是“大数据”显著的4V特征,或者说,只有具备这些特点的数据,才是大数据。2.大数据技术要解决的问题:大数据技术被设计用于在成本可承受的条件下,通过非常快速(velocity)地采集、发现和分转载 2017-07-21 22:20:17 · 17195 阅读 · 1 评论 -
大数据分析整体技术流程及架构
本文对项目中所用到的大数据分析整体流程技术及其架构进行简要的总结,以供大家在大数据分析平台对数据处理流程更加明确1.1 数据处理流程该项目是一个纯粹的数据分析项目,其整体流程基本上就是依据数据的处理流程进行,依此有以下几个大的步骤:1) 数据采集首先,通过页面嵌入JS代码的方式获取用户访问行为,并发送到web服务的后台记录日志然后,将各服务器上生成的点击流日志通过实时或批量的方原创 2017-07-21 21:44:16 · 17434 阅读 · 1 评论 -
crontab --定时执行任务
在工程项目中,难免需要用到一些定时执行的任务。对于java这种常驻内存的语言,比较容易解决,java自身就提供了定时任务,而且还有优秀的第三方开源工具quartz。但是像php、python这样脚本语言,定时任务就需要借助于操作系统的定时任务管理。不过python也有一个优秀的第三方开源插件celery完成定时任务的执行。这里我们就看一下linux操作系统定时任务管理器crontab的使用。原创 2017-07-20 23:59:04 · 451 阅读 · 0 评论 -
MapReduce---连接操作--Reduce端连接
MapReduce---连接操作--Reduce端连接1 、定义组合CombKeypackage hadoop.join.reduce;import org.apache.hadoop.io.WritableComparable;import java.io.DataInput;import java.io.DataOutput;import java.io.IO原创 2017-08-18 22:41:13 · 818 阅读 · 0 评论 -
MapReduce---chain链条式操作
准备数据:hello world of tom1hello world of tom1hello world of tom2hello world of tom3hello world of tom3hello world of tom4hello world of tom4思路分析图:1、Mapper1(切割单词)2、Mapper2 (滤掉单词中o原创 2017-08-18 23:26:30 · 832 阅读 · 0 评论 -
模拟分布式集群调试
集群环境:namenode s100 2namenode s104 datanode s101、s102、s105 在完全分布式集群,为了就跟深入的剖析MapReduce计算模型的工作机制,通过一个wordcount案例来进行分布式调试:观察每个主机运行的进程ID,线程,运行时的类,Ha原创 2017-08-15 23:33:30 · 777 阅读 · 0 评论 -
源码剖析MapReduce作业提交机制(本地模式)
深入剖析Hadoop 中的MapReduce作业的提交机制,有助于更深入的掌握MapReduce的工作原理,通过调优提高MapReduce性能。(请放大后查看)原创 2017-08-15 22:44:17 · 237 阅读 · 0 评论 -
hdfs源码剖析文件写入过程时序图
为了更深入的研究客户端与之交互的HDFS,namenode,datanode之间的数据流是怎么进行的,剖析了文件写入HDFS的过程。原创 2017-08-15 22:14:44 · 466 阅读 · 0 评论 -
MapReduce 的格式输入----MultipleInputs多个输入
针对 MapReduce的数据嘚瑟输入格式可能不同,有些数据可能以制表符分隔文本文件,有些数据可能是二进制顺序文件,即使它们的格式相同,它们的表示也看可能不同,因此需要分别进行解析。MultipleInputs可以妥善处理这些问题,它允许为每条输入路径指定InputFprmat和Mapperpublic static voidaddInputPath(JobConf conf, Pat原创 2017-08-21 21:10:44 · 1184 阅读 · 0 评论 -
MapReduce 的格式输入----NLineInputFormat
通过TextInputFormat和keyvalueTextInputformat,每个Mapper收到的输入的行数不同,行数取决于分片的大小和行的长度,如果希望mapper收到固定的行数的输入,需要将NLineInputFormat作为InputFormat使用,与TextInputFormat一样,键是行的字节的偏移量,值是行本身。1、WordCountMapperpackage ha原创 2017-08-21 21:07:17 · 614 阅读 · 0 评论 -
MapReduce 的格式输入----SequenceFileInputFormat ---源码分析
MapReduce不仅可以处理文本数据,还可以处理二进制数据。Hadoop顺序文件存储格式是二进制的键-值对序列,使用顺序文件作为MapReduce的输入,可以使用SequenceFileInputFormat。键-值对是由顺序文件格式决定,只需要保证map的输入格式正确,例如顺序文件的格式是InWritable-Intwritable,那么Mapper的输入格式也一样。1、M原创 2017-08-21 20:49:13 · 898 阅读 · 0 评论 -
MapReduce的输入格式---KeyValueTextInputFormat---源码分析
通常情况下,文件的每一行是一个键--值对,使用某个分解符进行分割,比如制表符,例如,由TextOutFormat(即Hadoop的默认输出就是这种),如果要正确处理这种文件,KeyValueTextInputFormat比较合适。1、MaxTempMapperpackage hadoop.mr.input.keyvaluetext;import debugtool.RTUtil;原创 2017-08-21 21:03:21 · 395 阅读 · 0 评论 -
文件归档与解档问题
1在大数据开发中,或这一些项目中,经常遇到很多小文件的处理,为了减小namenode内存的占用,提高效率,经常将小文件压缩并归档处理,而在流的读取与写的操作的时候,归档后还需要解档,下面写一个工具类,实现文件的归档与解档:package java.io;import java.util.DataUtil;import java.io.File;import java.io.FileI原创 2017-07-29 00:34:49 · 1226 阅读 · 0 评论 -
CombineFileinputFormat处理大批量小文件
请查看链接http://note.youdao.com/noteshare?id=1dbcfd6118584a2e099fef0160460811&sub=D9C588C547804FE8B895A4D6F056F191原创 2017-08-19 18:42:25 · 1050 阅读 · 0 评论 -
MapReduce 本地化优先策略
http://note.youdao.com/noteshare?id=db6a42debfcb09a1a6d54a497e760f68&sub=649D30D6AD144AB8AC13802E61B47E3E1、map具备本地化优势策略 map执行时优先选择在存储HDFS数据的服务器上执行,其次在同机架的服务器上执行,最次在其他机架服务器上执行。 hadoop执行第一步是将输入数原创 2017-08-19 15:37:43 · 1285 阅读 · 0 评论 -
hadoop集群环境搭建----完全分布式
1.克隆虚拟机克隆3台client(centos7) 步骤:右键centos-7-->管理->克隆-> ... -> 完整克隆2修改主机名s201 s202 s203 s204192.168.75.201 s201192.168.75.202 s202192.168.75.203 s203192.168.75.204 s204$>hostname原创 2017-07-03 21:35:31 · 493 阅读 · 0 评论 -
hodoop集群环境搭建----伪分布模式(Pseudodistributed mode)
a)进入${HADOOP_HOME}/etc/hadoop目录 三种模式共存 1.创建三个配置目录,内容等同于hadoop目录 ${hadoop_home}/etc/local ${hadoop_home}/etc/pesudo ${hadoop_home}/etc/full 2.创建符号连接原创 2017-07-03 21:26:44 · 1214 阅读 · 0 评论 -
hadoop3种集群方式搭建---独立模式
1.独立模式 1.1安装 a)下载jdk-8u65-linux-x64.tar.gzb)tar开$>su centos ; cd ~$>mkdir downloads$>cp /mnt/hdfs/downloads/bigdata/jdk-8u65-linux-x64.tar.gz ~/downlooads$>tar -xzvf jdk-8u65-linux-原创 2017-07-03 21:13:29 · 972 阅读 · 0 评论 -
解决通过ip能够访问网络,通过域名无法访问的问题
1)编辑/etc/resolv.conf,添加名称服务器,内容是网关地址。nameserver 192.168.231.22)保存退出3)重启服务$>su root$>service network restart4)测试www.baidu.com$>ping www.baidu.com原创 2017-07-03 21:09:24 · 18843 阅读 · 0 评论 -
centos防火墙关闭操作
centos防火墙关闭操作[cnetos 6.5之前的版本]$>sudo service firewalld stop //停止服务$>sudo service firewalld start //启动服务$>sudo service firewalld status //查看状态 [centos7]$>sudo systemctl enable firewalld.s原创 2017-07-03 21:08:00 · 444 阅读 · 0 评论 -
静态IP配置
1.切换root用户$>su root2.编辑/etc/sysconfig/network-scripts/ifcfg-eno16777736a.备份文件$>cd /etc/sysconfig/network-scripts$>cp ifcfg-eno16777736 ifcfg-eno16777736.bakb.进入/etc/sysconfig/network-原创 2017-07-03 20:49:48 · 543 阅读 · 0 评论 -
日志数据中的上下行流量信息汇总-----总流量倒序排序
对日志数据中的上下行流量信息汇总,并输出按照总流量倒序排序的结果数据如下:13480253104 180180 013502468823 1103497335 013560436666 9541116 013560439658 58922034 013602846565 29101938 013660577991 6906960 0137原创 2017-07-11 10:47:44 · 871 阅读 · 0 评论 -
对日志数据中的上下行流量信息汇总---分区统计
需求:对日志数据中的上下行流量信息汇总---分区统计根据归属地输出流量统计数据结果到不同文件,以便于在查询统计结果时可以定位到省级范围进行分析:Mapreduce中会将map输出的kv对,按照相同key分组,然后分发给不同的reducetask默认的分发规则为:根据key的hashcode%reducetask数来分发所以:如果要按照我们自己的需求进行分组,则需要改写数原创 2017-07-11 00:11:57 · 1108 阅读 · 0 评论 -
对日志数据中的上下行流量信息汇总
需求:对日志数据中的上下行流量信息汇总例如数据如下:1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 24 27 2481 24681 2001363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 4 0 26原创 2017-07-10 23:51:17 · 593 阅读 · 0 评论 -
MR英语单词频次统计案例-----wordcount
需求:在一堆给定的文本文件中统计输出每一个单词出现的总次数1、定义一个mapper类import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import原创 2017-07-10 23:36:27 · 1024 阅读 · 0 评论 -
rsync命令----解决远程拷贝一个问题通过scp不能复制ln文件
首先完全分布式的四个机器均安装rsync命令 远程同步. $>sudo yum install rsync1)创建一个xsync.sh文件 2)修改组chown centos:centos xsync.sh 3) nano xsync.sh#!/bin/bashif [[ $# -lt 1 ]] ; then echo no params ; exit ;原创 2017-07-03 21:59:35 · 1189 阅读 · 0 评论 -
社交粉丝数据分析----求qq共同好友
需求:以下是qq的好友列表数据,冒号前是一个用,冒号后是该用户的所有好友(数据中的好友关系是单向的)A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO原创 2017-07-13 22:09:38 · 1318 阅读 · 0 评论 -
ntp同步时间服务
第一种方式:同步到网络时间服务器 # ntpdate time.windows.com将硬件时间设置为当前系统时间。 #hwclock –w 加入crontab: 30 8 * * * root /usr/sbin/ntpdate 192.168.0.1; /sbin/hwclock -w 每天的8:30将进行一次时间同步。重启crond服务:servic原创 2017-07-08 00:39:37 · 342 阅读 · 0 评论 -
hadoop启动不正常问题解决
1、hadoop启动不正常用浏览器访问namenode的50070端口,不正常,需要诊断问题出在哪里:a、在服务器的终端命令行使用jps查看相关进程(namenode1个节点 datanode3个节点 secondary namenode1个节点)b、如果已经知道了启动失败的服务进程,进入到相关进程的日志目录下,查看日志,分析异常的原因1)配置文件出错,saxparse原创 2017-07-08 00:36:43 · 6124 阅读 · 0 评论 -
hadoop datanode节点超时时间设置
datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.i原创 2017-07-08 00:31:30 · 396 阅读 · 0 评论 -
namenode安全模式问题
当namenode发现集群中的block丢失数量达到一个阀值时,namenode就进入安全模式状态,不再接受客户端的数据更新请求在正常情况下,namenode也有可能进入安全模式:集群启动时(namenode启动时)必定会进入安全模式,然后过一段时间会自动退出安全模式(原因是datanode汇报的过程有一段持续时间)也确实有异常情况下导致的安全模式原因:block确实有缺失原创 2017-07-08 00:24:29 · 7849 阅读 · 0 评论 -
NameNode 、DataNode、Secondary NameNode工作机制
hdfs架构图1. NAMENODE工作机制1.1 NAMENODE职责NAMENODE职责:负责客户端请求的响应元数据的管理(查询,修改)是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。1.2 元数据的checkpoint每隔一段时间,会由secondary name原创 2017-07-07 23:50:28 · 3751 阅读 · 0 评论