Hadoop2.2.0集群在RHEL6.2下的安装实战
题记
本文介绍了一个Hadoop2.2.0集群的搭建过程,在2台4G内存的酷睿双核PC机上,使用VMWare WorkStation虚拟了4个RHEL6.2(1G内存、单核CPU、10G硬盘),总计用10个小时的时间,完成虚拟机制作和Hadoop建立过程,总体比较顺利。
本次集群搭建过程中,主要遇到两个问题:
(1)第一个是:DataNode启动了(使用jps可以看到进程),但是在NameNode中看不到(192.168.1.10:50070),花费大约3个小时时间查问题,根据logs目录的日志“org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:9000”,到百度搜索,有人遇到说是防火墙没关的问题,但是我的防火墙都关了。最后多种方式尝试,原来是/etc/hosts中,对于master除了对应到192.168.1.10之外,我还对应到了127.0.0.1,去掉之后,重新启动,就都好了。
(2)第二个是:常见问题,多次format namecode造成的DataNode不启动,删除/home/hadoop/dfs/data/current/VERSION就好了。
(3)多看日志,总能解决
Hadoop是什么
Hadoop是Lucene创始人Doug Cutting,根据Google的相关内容山寨出来的分布式文件系统和对海量数据进行分析计算的基础框架系统,其中包含MapReduce程序,hdfs系统等。
名词解释
(1)Hadoop:Apache开源的分布式框架。
(2)HDSF:Hadoop的分布式文件系统。
(3)NameNode:Hadoop HDFS元数据主节点服务器,负责保存DataNode 文件存储元数据信息,这个服务器是单点的。
(4)JobTracker:Hadoop的Map/Reduce调度器,负责与TaskTracker通信分配计算任务并跟踪任务进度,这个服务器也是单点的。
(5)DataNode:Hadoop数据节点,负责存储数据。
(6)TaskTracker:Hadoop调度程序,负责Map,Reduce任务的启动和执行。
Hadoop1的集群部署结构图
Hadoop1的组件依赖关系图
Hadoop2的Yarn架构图
安装RHEL环境
使用VMWare WorkStation安装虚拟机:
http://blog.csdn.net/puma_dong/article/details/17889593#t0
http://blog.csdn.net/puma_dong/article/details/17889593#t1
安装Java环境:
http://blog.csdn.net/puma_dong/article/details/17889593#t10
安装完毕之后,4台虚拟机IP及机器名称如下:
192.168.1.10 master
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3
可以通过vim /etc/hosts查看。注意:在/etc/hosts中,不要把机器名字,同时对应到127.0.0.1这个地址,会导致数据节点连接不上命名节点,报错如下:
org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:9000
安装完毕之后,Java位置如下:/usr/jdk1.6.0_45 ,可以通过echo $JAVA_HOME查看。
配置Hadoop环境
创建Hadoop账号
(1)创建Hadoop用户组:groupadd hadoop
(2)创建Hadoop用户:useradd hadoop -g hadoop
(3)设置Hadoop用户密码:passwd 密码hadoop
(4)给hadoop账户增加sudo权限: vim /etc/sudoers ,增加内容:hduser ALL=(ALL) ALL
注意:以上对于每一台机器都要执行
创建master到slave的无密码登录
(1)切换到Hadoop 用户下:su hadoop cd /home/hadoop/
(2)生成公钥和私钥:ssh-keygen -q -t rsa -N "" -f /home/hadoop/.ssh/id_rsa
(3)查看密钥内容:cd /home/hadoop/.ssh cat id_rsa.pub
(4)复制id_rsa.pub公钥到 authorized_keys 文件:cat id_rsa.pub > authorized_keys
(5)修改master公钥权限:chmod 644 /home/hadoop/.ssh/authorized_keys
(6)把 master 机器上的 authorized_keys 文件 copy 到 node1 节点上:
scp /home/hadoop/.ssh/authorized_keys node1:/home/hadoop/.ssh/
如果node1/node2/node3机器上没有.ssh目录,则创建,并chmod 700 /home/hadoop/.ssh
安装Hadoop
安装目录
Hadoop安装目录:/home/hadoop/hadoop-2.2.0
文件目录:/home/hadoop/dfs/name ,/home/hadoop/dfs/data ,/home/hadoop/tmp
安装步骤
注意:以下步骤使用hadoop账号操作。
(1)转到 home/hadoop目录:cd /home/hadoop
(2)下载hadoop:wget http://mirror.esocc.com/apache/hadoop/common/stable2/hadoop-2.2.0.tar.gz
(3)解压hadoop并放到计划安装位置:tar zxvf hadoop-2.2.0.tar.gz
(4)创建文件目录:mkdir -p /home/hadoop/dfs/name /home/hadoop/dfs/data /home/hadoop/tmp
(5)修改7个配置文件,文件位置:/home/hadoop/hadoop-2.2.0/etc/hadoop/,文件名称:hadoop-env.sh、yarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
配置文件hadoop-env.sh
如果系统环境变量有设置$JAVA_HOME,则这个文件不用修改,否则要修改${JAVA_HOME}为:/usr/jdk1.6.0_45
配置文件yarn-env.sh
如果系统环境变量有设置$JAVA_HOME,则这个文件不用修改,否则要修改${JAVA_HOME}为:/usr/jdk1.6.0_45
配置文件slaves
vim /home/hadoop/hadoop-2.2.0/etc/hadoop/slaves,修改内容为所有的DataNode的机器名字,每个机器一行,这篇文章的配置如下:
node1
node2
node3
配置文件core-site.xml
vim /home/hadoop/hadoop-2.2.0/etc/hadoop/core-site.xml,修改configuration内容如下:
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://master:9000</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/home/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- </configuration>
配置文件hdfs-site.xml
vim /home/hadoop/hadoop-2.2.0/etc/hadoop/hdfs-site.xml,修改configuration内容如下:
- <configuration>
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>master:9001</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/home/hadoop/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/home/hadoop/dfs/data</value>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
- </configuration>
配置文件mapred-site.xml
mv /home/hadoop/hadoop-2.2.0/etc/hadoop/mapred-site.xml.template /home/hadoop/hadoop-2.2.0/etc/hadoop/mapred-site.xml
vim /home/hadoop/hadoop-2.2.0/etc/hadoop/mapred-site.xml,修改configuration内容如下:
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>master:10020</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>master:19888</value>
- </property>
- </configuration>
配置节点yarn-site.xml
vim /home/hadoop/hadoop-2.2.0/etc/hadoop/yarn-site.xml,修改configuration内容如下:
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
- <value>org.apache.hadoop.mapred.ShuffleHandler</value>
- </property>
- <property>
- <name>yarn.resourcemanager.address</name>
- <value>master:8032</value>
- </property>
- <property>
- <name>yarn.resourcemanager.scheduler.address</name>
- <value>master:8030</value>
- </property>
- <property>
- <name>yarn.resourcemanager.resource-tracker.address</name>
- <value>master:8031</value>
- </property>
- <property>
- <name>yarn.resourcemanager.admin.address</name>
- <value>master:8033</value>
- </property>
- <property>
- <name>yarn.resourcemanager.webapp.address</name>
- <value>master:8088</value>
- </property>
- </configuration>
复制Hadoop到其他节点
(1)scp -r /home/hadoop/hadoop-2.2.0 hadoop@node1:~/
(2)scp -r /home/hadoop/hadoop-2.2.0 hadoop@node2:~/
(3)scp -r /home/hadoop/hadoop-2.2.0 hadoop@node3:~/
启动Hadoop
(1)切换到hadoop用户:su hadoop
(2)进入安装目录: cd ~/hadoop-2.2.0/
(3)格式化namenode:./bin/hdfs namenode –format
(4)启动hdfs: ./sbin/start-dfs.sh
(5)jps查看,此时master有进程:NameNoce SecondaryNameNode,node1/node2/node3上有进程:DataNode
(6)启动yarn: ./sbin/start-yarn.sh
(7)jps查看,此时master有进程:NameNoce SecondaryNameNode ResourceManager,node1/node2/node3上有进程:DataNode NodeManager
(8)查看集群状态:./bin/hdfs dfsadmin -report
(9)查看文件块组成: ./bin/hdfs fsck / -files -blocks
(10)Web查看HDFS: http://192.168.1.10:50070
(11)Web查看RM(Resource Manager): http://192.168.1.10:8088
(12)Web查看NM(Node Manager):http://192.168.1.11:8042
(13)启动JobHistory Server:mr-jobhistory-daemon.sh start historyserver,可以通过:http://192.168.1.10:19888/ 查看任务执行历史信息,终止JobHistory Server,执行如下命令:mr-jobhistory-daemon.sh stop historyserver 。
HADOOP_HOME环境变量
在运行方便,我们设置一个HADOOP_HOME环境变量,并加入PATH目录,步骤如下:
(1)vim /etc/profile.d/java.sh #因为hadoop必用java,所有我们把使用这个文件即可。
(2)增加内容:
export HADOOP_HOME=/home/hadoop/hadoop-2.2.0
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
运行Hadoop计算任务
WordCount
(1)/home/hadoop目录下有两个文本文件file01.txt和file02.txt,文件内容分别为:
file01.txt:
kongxianghe
kong
yctc
Hello World
file02.txt:
11
2222
kong
Hello
yctc
(2)将这两个文件放入hadoop的HDFS中:
hadoop fs -ls //查看hdfs目录情况
hadoop fs -mkdir -p input
hadoop fs -put /home/hadoop/file*.txt input
hadoop fs -cat input/file01.txt //查看命令
(3)计算并查看结果:
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount input output
hadoop fs -ls output
hadoop fs -cat output/part-r-00000
可以看到数据都已经被统计出来了。
hadoop fs,或者使用hdfs dfs,但是不要使用hadoop dfs,因为已经不推荐使用了,会有警告。
基准测试排序
Hadoop自带一些基准测试程序,用来测试集群性能。例如:
如下的这个程序,会现在每个节点生成10个G的随机数字,然后排序出结果:
(1)./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter rand
(2)./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar sort rand sort-rand
第一个命令会在rand 目录的生成没有排序的数据。第二个命令会读数据,排序,然后写入rand-sort 目录。
例如,hadoop_*_test.jar TestDFSIO,用来测试IO性能;其他常用的还有:
(1)MRBench(使用mrbench选项)会多次运行一个小型作业,以检验小型作业能否快速的相应。
(2)NNBench(使用nnbench选项)专门用于测试namenode硬件的负载。
(3)Gridmix是一个基准测试程序套装。通过模拟一些真实常见的数据访问模式,能逼真地为一个集群的负载建模。
常见错误
(1)Name node is in safe mode
运行hadoop程序时, 异常终止了,然后再向hdfs加文件或删除文件时,出现Name node is in safe mode错误:
rmr: org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode
解决的命令:
hdfs dfsadmin -safemode leave #关闭safe mode
(2)DataNode 无法启动
我遇到过两种情况的DataNode无法启动:第一种是/etc/hosts里面机器名字除了和IP对应之外,还和127.0.0.1对应,导致DataNode连接NameNode的9000端口一直连接不上;第二种是多次format namenode 造成namenode 和datanode的clusterID不一致,通过查看NameNode和DataNode的/home/hadoop/dfs/data/current/VERSION,发现确实不一致。
总之,遇到错误不要慌,多看看$HADOOP_HOME/logs下面的日志,就能找到问题。
Hadoop2.2.0集群在RHEL6.2下的安装实战相关推荐
- linux集群启动脚本,Hadoop2.2.0集群启动和停止Shell脚本
说明:Hadoop2.2.0集群启动和停止Shell脚本,以下脚本中出现的master,slave1,slave2,slave3均已配host. startupall.sh #!/bin/bash h ...
- hadoop2.2.0 集群安装配置
本集群由6台虚拟机组成,全部安装centos6.4的32位系统. 一.前期工作 1.修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系 4.关闭防火墙 5.ssh免登陆 6.安装JDK ...
- (转载)hadoop2.2.0集群的HA高可靠的最简单配置
转载网址:http://www.cnblogs.com/meiyuanbao/p/hadoop2.html 简介 hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在had ...
- Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误
25. 集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据 ...
- 国内最全最详细的hadoop2.2.0集群的HA高可靠的最简单配置
简介 hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了 ...
- CentOS6.4配置Hadoop-2.6.0集群配置安装指南
第一步:所需系统信息:64位CentOS系统 [root@systdt etc]# uname -a Linux systdt 2.6.32-358.el6.x86_64 #1 SMP Fri Feb ...
- 搭建hadoop2.6.0集群环境
一.规划 (一)硬件资源 10.171.29.191 master 10.171.94.155 slave1 10.251.0.197 slave3 (二)基本资料 用户: jediael 目录: ...
- RedHadoop创始人童小军在北京开讲“Hadoop2.0集群优化与管理”啦!
一.活动介绍 目前Hadoop的应用越来越广泛,开始被很多企业采用,且Hadoop人才十分稀缺和抢手,待遇也远比Java..Net开发好.为了帮助您快速掌握Hadoop的前沿技术,了解企业应用Hado ...
- hadoop2.4.1集群搭建
准备Linux环境 修改主机名: $ vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop001 修改IP: # vim /etc/sys ...
最新文章
- 图片提取文字功能很神奇?Java几行代码搞定它!
- python是什么语言、即变量不需要显示声明数据类型-python中可以声明变量类型吗...
- 【Android 逆向】selinux 进程保护 ( selinux 进程保护 | 宽容模式 Permissive | 强制模式 Enforcing )
- OpenGL合并转换
- 树形结构:寻找共同祖先
- apache域名跳转
- abaqus python 建立节点集合_在Python中创建Abaqus集
- Visual Studio 2017新建及运行C++程序步骤
- StringHelper--封转自己的字符串工具类
- 程序.NET Framework版本升级,重签名,重链接,批量签名工具
- 16R-在数组中查找目标值
- 半个月可以写出一个电脑操作系统吗?
- DXUT框架剖析(13)
- if else语句linux,linux 中的if else语句
- yyyy-MM-dd HH:mm:ss和yyyy-MM-dd hh:mm:ss的区别
- 浅谈串口DCB流控制设置
- IMO FTPC Part 3-A、B和F级分隔耐火性能测试
- 矩阵转置相关公式_线性代数入门——矩阵的转置运算及对称矩阵的概念
- html中响应ocx事件,JS实现OCX控件的事件响应示例
- eaxsinbx_高等数学导数与微分练习题
热门文章
- bss,data,text,rodata,堆,栈,常量段
- 如何参与github上的开源项目?
- 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
- IDEA中pom.xml中导入spring-boot-starter-thymeleaf报错的解决方案
- php 模板使用,TMDPHP 模板引擎使用教程
- 希尔排序(ShellSort) c源码
- python判断能否组成三角形_牛鹭学院:学员笔记|Python: 输入三条边,判断是否可以成为三角形...
- import android.view.window;,尝试在空对象引用上调用虚拟方法‘android.view.Window$回调...
- 电子工程与计算机科学的读后感,读后感-相关博文 - 电子工程世界-论坛
- dump java崩溃自动 不生成_GitHub 自动生成 .gitignore,只想写代码不重要的事情别烦我...