文档章节

Hadoop2.2.0集群在RHEL6.2下的安装实战

蓝狐乐队
 蓝狐乐队
发布于 2014/04/21 11:18
字数 1975
阅读 192
收藏 5

本文介绍了一个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的集群部署结构图

20140412230028015.jpg (95.69 KB, 下载次数: 0)

下载附件  保存到相册

6 天前 上传




Hadoop1的组件依赖关系图

20140412225748359.jpg (50.6 KB, 下载次数: 0)

下载附件  保存到相册

6 天前 上传




Hadoop2的Yarn架构图

20140413085324421.jpg (183.81 KB, 下载次数: 0)

下载附件  保存到相册

6 天前 上传




安装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/h ... 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内容如下:


fs.defaultFShdfs://master:9000io.file.buffer.size131072hadoop.tmp.dirfile:/home/hadoop/tmpAbase for other temporary directories.
配置文件hdfs-site.xml
vim /home/hadoop/hadoop-2.2.0/etc/hadoop/hdfs-site.xml,修改configuration内容如下:



dfs.namenode.secondary.http-addressmaster:9001dfs.namenode.name.dirfile:/home/hadoop/dfs/namedfs.datanode.data.dirfile:/home/hadoop/dfs/datadfs.replication3dfs.webhdfs.enabledtrue

配置文件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内容如下:


mapreduce.framework.nameyarnmapreduce.jobhistory.addressmaster:10020mapreduce.jobhistory.webapp.addressmaster:19888

配置节点yarn-site.xml
vim /home/hadoop/hadoop-2.2.0/etc/hadoop/yarn-site.xml,修改configuration内容如下:


yarn.nodemanager.aux-servicesmapreduce_shuffleyarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandleryarn.resourcemanager.addressmaster:8032yarn.resourcemanager.scheduler.addressmaster:8030yarn.resourcemanager.resource-tracker.addressmaster:8031yarn.resourcemanager.admin.addressmaster:8033yarn.resourcemanager.webapp.addressmaster:8088

复制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:    http://192.168.1.10:8088



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

可以看到数据都已经被统计出来了。

运行排序计算
如下的这个程序,会现在每个节点生成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 目录。


常见错误
(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
解决的命令:
hadoop 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下面的日志,就能找到问题。

本文转载自:

蓝狐乐队
粉丝 107
博文 325
码字总数 94335
作品 0
昌平
程序员
私信 提问
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(1)

第一步:构造分布式Hadoop2.2.0集群 1,在Windows 7(本教程中的Spark集群运行的机器是8G的Windows内存)上安装VMware虚拟机(我们安装的是VMware-workstation-full-9.0.2),本教程中的VMwar...

Spark亚太研究院
2014/10/08
216
0
hadoop2.2.0安装笔记

NameNode 192.168.1.122 hadoop/hadoop VM 192.168.1.123 DataNode1 192.168.1.124 datanode1/datanode1 hadoop/hadoop DataNode2 192.168.1.125 datanode2/datanode2 hadoop/hadoop 一、在所......

陶诗德
2014/07/10
230
0
centos 6.5 YUM安装软件 错误提示 No more mirrors to try. 如何解决

centos 6.5 YUM安装软件 错误提示 No more mirrors to try. 如何解决 在Centos6.5中,使用yum安装openstack时候报错:[Errno 256] No more mirrors to try.,本文我们来分析这个错误,及提供...

Jack崔
2017/07/27
0
0
centos6.4 32/64位机 hadoop2.2.0集群安装

1、准备环境 安装VMware10 ,三台centos6.4 版本,安装在VMware虚拟机下。 1)安装中文输入法: 1、需要root权限,所以要用root登录 ,或su root 2、yum install "@Chinese Support" 2)安装...

kt431128
2014/06/03
8.6K
17
RHEL6.2下挂载光驱安装软件

导读 在RHEL6.2命令行模式下挂载虚拟光驱安装软件也许会难倒许多新手,下面我给大家详细介绍一下。首先说明一下,本教程是以RHEL6.2版本下安装Apache为例。主要讲述挂载虚拟光驱的方法。环境...

linuxprobe
2016/05/08
30
0

没有更多内容

加载失败,请刷新页面

加载更多

应急广播户户通平台

一、平台概述 应急广播户户通平台为软硬一体化广播服务解决方案。实现了应急广播、视音频及图片文字信息、调频及数字广播FM、天气预报信息接收功能,以及视音频播放、智能机器人、电子日历等...

neocean
27分钟前
39
0
如何为Apache 2.2启用mod_rewrite

我已经在我的Vista机器上安装了新的Apache 2.2,一切正常,除了mod重写。 我没有注释 LoadModule rewrite_module modules/mod_rewrite.s 但是我的重写规则都没有,即使是简单的重写规则 Re...

javail
33分钟前
23
0
移除Python unicode字符串中的重音符号的最佳方法是什么?

我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号)。 我在网上发现了一种用Java实现此目的的优雅方法: 将Unicode字符串转换为长规范化格式(带有单独的字母和变音符号)...

技术盛宴
49分钟前
48
0
ActiveMQ学习之SpringBoot整合ActiveMQ------>主题生产者和消费者

一、pom <!--聚合工程集成关系--> <!--统一整合第三方框架依赖信息--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</a......

冥焱
今天
75
0
两周自制脚本语言-第11天 优化变量读写性能

第11天 优化变量读写性能 以变量值的读写为例,向读者介绍基于这种理念的语言处理器性能优化方式。 11.1 通过简单数组来实现环境 假如函数包含局部变量x与y,程序可以事先将x设为数组的第0个...

果汁分你一半
今天
52
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部