Hadoop汇总整理.docx
- 文档编号:6166809
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:14
- 大小:843.20KB
Hadoop汇总整理.docx
《Hadoop汇总整理.docx》由会员分享,可在线阅读,更多相关《Hadoop汇总整理.docx(14页珍藏版)》请在冰豆网上搜索。
Hadoop汇总整理
Hadoop汇总整理
1、hadoop简介
Hadoop是一个分布式系统,核心就是hdfs(分布式文件系统)和mapReduce(映射-化简运算程序);
Hadoop有三种模式:
独立模式、伪分布模式、完全分布模式;
Hadoop主要以nameNode(核心)、secondNameNode、dataNode组成;
可以将海量数据输出到文件中,然后将文件通过hadoop-put命令将文件上传到hdfs中,然后通过java代码按照一定的规则编写自己的业务逻辑,形成mapReduce的代码,最终将java代码打成jar包,并在hdfs中执行jar包,最终输出一个结果文件;
2、Hadoop在windows上安装
在windows上安装hadoop一般就是伪分布,只适合用于自测;
Windows中搭建hadoop伪分布步骤如下:
1、下载jdk-1.8,并配置环境变量JAVA_HOME=jdk安装后的文件路径;
2、在PATH中追加内容:
JAVA_HOME/bin
3、下载hadoop-2.2.0,并配置环境变量HADOOP_INSTALL=hadoop解压后的文件路径;
4、在PATH中追加内容:
HADOOP_INSTALL/bin和HADOOP_INSTALL/sbin两个文件夹目录;
5、按照配置文件中的信息,配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml;
6、
3、Hadoop在windows中常见异常:
1、异常一:
解决方法:
hadoop-common-2.2.0-bin-master中的文件放置到hadoop解压后的bin文件夹中,注意:
如果有重复的文件不要移动;
2、异常二:
执行命令hadoopfs-mkdir-p/lsy_test/test/就是同时创建多个文件夹出现异常,不能创建;
解决方法:
因为HADOOP_INSTALL环境变量指定的文件路径即hadoop安装文件解压后的文件夹中bin/*.cmd文件中所有call函数前必须顶格写且不能出现空格,需要手动修改该文件夹下的所有.cmd格式文件;
3、异常三:
有些进程启动后,利用stop-all.cmd杀死不掉所有进行,表名留下的进行是有问题的,这是因为hadoop的版本与hadoop-common-2.2.0-bin-master的版本不一致导致的,但是common只有2.2.0版本,因此在windows上只能使用hadoop的2.2.0版本;
4、异常四:
解决方法:
是因为安装jdk的文件路径中某个文件夹的名称中有空格,重新安装下jdk的路径即可;
5、
4、Hadoop在linux上安装
1、下载jdk,上传到linux上并解压文件、配置环境变量JAVA_HOME,在PATH追加内容:
JAVA_HOME/bin;
2、下载hadoop,上传到linux上并解压文件、配置环境变量HADOOP_INSTALL,在PATH中追加内容:
HADOOP_INSTALL/bin和HADOOP_INSTALL/sbin;
3、按照配置文件中的信息,配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml;
4、配置nameNode有哪几个dataNode节点:
在slaves文件中,告知nameNode节点的计算机它的dataNode节点有哪几个:
在slaves文件中配置dataNode的ip地址即可;
5、创建SSH免密登录:
(1)在linux中下载ssh-clients、ssh-server,linux自带的ssh不行;
(2)生成一对不对称加密秘钥:
ssh-keygen-trsa-P‘’-f~/.ssh/id_rsa;然后会在~/.ssh下有id_rsa为私钥,id_rsa.pub为公钥;
(3)将公钥放到authorized_keys中:
catid_rsa.pub>>authorized_keys
6、将1-3中对于hadoop相关的软件和配置信息复制到集群中的其它节点上去,将4中SSH免密登录中的~/.ssh/*中所有文件同样复制到集群其它节点上去,并手动逐个进行ssh登录,第一次需要选择yes并手动输入密码,这样以后就实现SSH免密登录了;
7、在nemeNode节点所在服务器上格式化hadoop的hdfs系统:
hadoopnamenode-format
8、在nemeNode节点上启动hadoop:
start-all.sh
9、在nemeNode节点上关闭hadoop:
stop-all.sh
10、
5、Hadoop集群安装后必做事情:
1、修改dataNode中数据存储路径:
在core-site.xml配置文件中添加以下配置参数:
2、配置dataNode的线程数量:
在hdfs-site.xml中配置以下参数:
(注意要小于linux的ulimit-n参数)
3、配置sockets等待的时间:
在hdfs-site.xml中配置以下参数:
(单位:
1000ms=1s)
4、解除hadoop的安全模式:
在hadoop解压后的文件夹中执行命令:
bin/hadoopdfsadmin-safemodeleave
5、
6、Hadoop在linux中常见异常:
1、异常信息:
org.apache.hadoop.dfs.SafeModeException:
Cannotdelete/user/hadoop/input.Namenodeisinsafemode
原因:
是hadoop处在安全模式,此时不能对hadoop的文件系统进行修改;
解决方法:
在hadoop文件夹下执行以下命令,解除安全模式:
bin/hadoopdfsadmin-safemodeleave
2、异常信息:
hadoop启动失败,异常信息中有类似uuid的字符串;
解决方法:
可能是nameNode中版本号与dataNode中版本号不一致,删除nameNode和secondNameNode中hadoop格式化后产生的有关账号、版本信息的文件夹,然后重新格式化nameNode即可;
3、异常信息:
.SocketTimeoutException:
60000millistimeoutwhilewaitingforchanneltobereadyforread
原因:
因为datanode的服务线程连接数都被占用
解决方法:
在hdfs-default.xml配置文件里面新增或修改dfs.datanode.handler.count,默认值为10;
在hdfs-default.xml配置文件里面新增或修改dfs.client.socket-timeout,默认是60000ms。
注意,旧版本的Hadoop用的是dfs.socket.timeout;
4、异常信息:
INFOhdfs.DFSClient:
ExceptionincreateBlockOutputStream
临时解决方法:
关闭防火墙:
iptables-F
禁用selinux:
setenforce0
永久解决方法:
永久关闭防火墙:
chkconfigiptablesoff
永久关闭selinux:
vi /etc/selinux/config文件
设置“SELINUX=disabled”
5、
7、Hadoop常用命令:
8、Hadoop单节点架构分析:
9、Hadoop集群架构分析:
10、Hadoop中HDFS分析:
1、整体分析:
(1)nameNode:
非常重要,只有一个,需要用RAID;
(2)dataNode:
有很多个,并且默认有3个备份,所以不需要用RAID;
(3)dataFile:
对一个大数据量文件进行切割,V1版本hadoop是64m切割单位;V2版本Hadoop是128m切割单位;切割后的就是一个block,每一个block就会在每一个节点上进行切割,备份的是3个block,最终就是将一个大数据文件均匀的分布到节点上;
2、nameNode分析:
(1)只存储元数据,为目录结构,也就是文件存放的路径;
(2)非常重要只有一个,存储用RAID;
(3)只对目录本身操作的增删做日志记录,对于文件中真正的数据操作是不存储的;
(4)如果某个dataNode出现问题,就会负责恢复数据或创建副本;
(5)nameNode需要维护的表:
表1:
Namespace--->block:
一个数据文件被切割了多少block,映射关系存储在硬盘中;
表2:
Block--->dataNode:
每一个block存放在哪个dataNode上,映射关系存储在内存中;
3、dataNode分析:
(1)存储真实的数据;
(2)可以运行在多种文件系统上;
(3)定时向nameNode发送心跳信息告知nameNode自己有哪些block;
(4)同一个机架上放置一个副本,另一外找一个机架放置2个副本;
11、Hadoop中mapReduce分析:
1、mapReduce大致运行过程:
(1)在各个节点上读取文件中的数据,结果一key-value形式存储;
(2)将原始数据通过map的规则获取只包含需要的部分数据,得到一个新的数据以key-value形式存储;
(3)将得到的新的数据通过shuffle就是清洗数据,获取整合后的数据;
(4)将整合后的数据通过reduce将数据进行化简,得到最终需要的结果数据;
2、mapReduce运行过程分析:
(1)hadoop中map阶段:
将原始数据进行映射,产生一个新的map键值对,生成阶段性结果;
map在右数据的节点上进行运行;
(2)Hadoop中的shuffle阶段(隐藏的不需要关注的):
在map处理的结果中,如果对于同一个key值,那么会自动合并value值,这样的话map传递给reduce的结果中的键值对的value值就是一个数组;
(3)Hadoop中reduce阶段:
将阶段性结果的map键值对进行化简,产生最终的结果数据;
3、mapReduce在集群中哪些节点上运行的查看方法:
(1)map运行中,首先将一个大文件切割成若干个小文件,一个小文件就对应一个map的task任务,并且在调用map的方法前会调用setup方法,在调用map的方法后会调用cleanup方法;
(2)可以在自己的map的java类中重写setup和cleanup方法,在方法体中可以打印节点的ip地址、系统时间等信息,这样可以看出哪个节点在什么时间执行了mapReduce程序;
(3)注意,对于.gz文件在map运行过程中是不能进行切割的,hadoop对于mapReduce多线程集群运行的核心在于对一个数据文件进行了切割;
4、
12、Hadoop中mapReduce的编写及运行流程:
(1)在eclipse中创建一个java项目;
(2)将hadoop中的的jar包非source.jar、test.jar包添加到项目中去;
(3)创建Map类继承hadoop中的Mapper类,Mapper类有四个参数,分别表示,以下所有数据类型都是hadoop中的:
KEYIN:
原始数据key数据类型
VALUEIN:
原始数据value数据类型
KEYOUT:
经过map提取部分数据后的Key数据类型
VALUEOUT:
经过map提取部分数据后的value数据类型
(4)在新创建的Map类中重写Mapper中的map方法,在map方法体中写java代码,实现提取自己需要的数据,在Context上下文参数中有write()方法可以将提取的数据传递给流程中去;
(5)创建Reduce类继承hadoop中的Reducer类,Reducer类有四个参数,分别表示如下,非常注意Map的输出就是Reduce的输入,注意Map输出数据类型与Reduce输入数据类型保持一致:
KEYIN:
与Map输出的key数据类型保持一致
VALUEIN:
与Map输出的value数据类型保持一致
KEYOUT:
输出的Key数据类型
VALUEOUT:
输出的value数据类型
(6)在新创建的Reduce类中重写reduce方法,在reduce方法体中写java代码,实现对map提取的数据进行化简,得到最终的结果数据,并通过Context上下文中的write方法将结果数据传递到流程中去;
(7)创建一个App类,作为应用程序的入口:
在main方法中写java代码,引用的类都使用mapreduce中的类;
//创建作业
Jobjob=newJob();
job.setJarByClass(MaxTemperature.class);
//设置作业名称
job.setJobName("Maxtemperature");
//添加输入路径,可以添加多个路径,添加文件或文件夹都可以,但是对于文件夹是不会递归处理的
FileInputFormat.addInputPath(job,newPath(args[0]));
//设置输出路径,只能设置一个输出路径,并且输出路径不能存在,最终数据结果存放位置
FileOutputFormat.setOutputPath(job,newPath(args[1]));
//设置map的类
job.setMapperClass(MaxTemperatureMapper.class);
//设置reduce类
job.setReducerClass(MaxTemperatureReducer.class);
//设置输出的key类型
job.setOutputKeyClass(Text.class);
//设置输出的value类型
job.setOutputValueClass(IntWritable.class);
//等待作业的完成,返回一个bool类型的结果值
job.waitForCompletion(true);
(8)将项目导出一个jar包,注意只需要导出要执行的几个类就行,要选择mainclass类作为程序的入口;
(9)在独立模式上测试运行:
执行命令,将Jar设置到环境变量中去:
Windows下:
setHADOOP_CLASSPATH=xxx.jar
Linux下:
exportHADOOP_CLASSPATH=xxx.jar
执行hadoop命令,执行main方法进行数据处理:
hadoopjar包中main方法所在类的包路径要读取的文件路径输出结果文件路径,文件夹不能自己创建,它会自动创建;
非常注意:
如果堆内存不够的话,就在hadoop后面添加-Xmx=1000m;
程序运行完毕后,在指定输出的文件夹中有_SUCCESS表示程序运行成功,在part-r-000000中就是运行的最终计算结果;
(10)在集群模式上运行:
将jar文件放置到hadoop集群的主机上去;
可以共享文件夹或SSH上传到主机上去,即nameNode节点所在计算机中;
将数据放置存储到hadoop的hdfs系统中去;
在nameNode中创建目录,并将数据文件上传到指定的文件夹中去
Hadoopfs-put文件及名称保存文件夹路径
集群上执行hadoop的命令;
hadoopjarjar包文件名称.jar输入文件路径结果输出文件路径
13、Hadoop中查看数据在集群中分布:
1、通过登录web网页查看数据:
http:
//nameNodeIp:
50070/;网页中的Utilities功能块中Browsethefilesystem中可以查看数据分布;
2、在linux中可以在/tmp/hadoop-用户名/dfs/data/....一系列文件夹中找到对应的存储数据的文件;
14、Hadoop中全部参数配置查找:
1、core-site.xml所有参数的配置文件:
在hadoop-common-xxx.jar中的xml文件
2、hdfs-site.xml所有参数的配置文件:
在hadoop-hdfs-xxx.jar中的xml文件
3、mapReduct-site.xml所有参数的配置文件:
在Hadoop-mapReduce-xxx.jar中的xml文件
4、yarn-site.xml所有参数的配置文件:
在hadoop-yarn-xxx.jar中的xml文件
15、Hadoop中查看运行日志信息:
hadoop中目录节点存储位置:
/tmp/hadoop-用户/xxx/dfs/name/xxx
Hadoop中数据节点存储位置:
/tmp/hadoop-用户/xxx/dfs/data/xxx
Hadoop中日志存储位置:
$HADOOP_INSTALL/logs/
16、Hadoop中可以web查看集群信息的几个常用连接:
1、nameNode节点信息查看:
(ip为nameNode所在节点ip地址)
http:
//ip:
50070/
2、资源管理信息查看:
(ip为nameNode所在节点ip地址)
http:
//localhost:
8088/
3、历史服务信息查看:
(ip为nameNode所在节点ip地址)
http:
//localhost:
19888/
17、Kettle连接hadoop集群:
1、
18、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 汇总 整理