Redhat 6.5 hadoop2.5.2安装

348 阅读6分钟
在三台主机上搭建,主节点为master,子节点分别是node1和node2
1.修改主机名
在root用户下执行以下命令,需要为每个主机都修改,并且每个主机应该都不同:
vi /etc/sysconfig/network

reboot
重启之后下图红框中的值如果变成了上面修改的值,说明修改成功
2. 配置主机名和ip的映射
为每个主机都配置如下内容:
vi /etc/hosts

3.创建hadoop用户组和账户
在root用户下执行以下命令,需要为每个主机都创建:

创建hadoop用户组
groupadd hadoop

创建hadoop用户
useradd -s /bin/bash -d /home/hadoop -m hadoop -g hadoop

为hadoop用户设置密码,需要输入两次相同的密码,下图中的BAD PASSWORD提示可忽略
passwd hadoop
4.配置ssh免密
在hadoop用户home目录下,执行以下命令生成ssh公钥和密钥,文件会生成当前目录下的.ssh目录中:
ssh-keygen -t dsa(之后一路回车,只到出现下 图为止),或可执行ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa命令直接生成

进入.ssh目录,执行cat命令生成authorized_keys文件
cd .ssh

cat id_dsa.pub >> authorized_keys

修改authorized_keys文件的权限,此操作一定要执行,不然ssh免密无法成功
chmod 755 authorized_keys

之后检测ssh连接本机是否已经免密,第一次执行ssh localhost命令需要输入yes,之后就不再需要
ssh localhost(如果ssh命令不存在,可执行yum -y install openssh-clients安装)

退出ssh连接命令
exit

5.主节点(master)通过ssh免密登录子节点(slave)
以hadoop用户登录子节点主机,在子结节.ssh目录执行scp命令将公钥文件拷贝到子节点上
scp hadoop@master:~/.ssh/id_dsa.pub ./master_dsa.pub

追加主节点公钥到子节点authorized_keys文件中
cat master_dsa.pub >> authorized_keys

在主节点主机执行ssh命令测试免密是否已经成功,同连接本机一样,第一次执行需要输入yes,之后不再需要,
不出意外,主节点已经可以正常连接子节点
ssh node2

退出ssh连接命令
exit
以同样的方式为其他子节点设置免密

6.安装jdk(以root用户安装)
下载jdk包(如:jdk-7u79-linux-x64.tar.gz),上传包到服务器/root目录

创建java安装目录
mkdir -p /opt/app/

进入root home目录,解压jdk的包到安装目录
cd /root

tar -zxvf jdk-7u79-linux-x64.tar.gz -C /opt/app/

配置java环境变量,打开/etc/profile,需要增加如下内容:
vi /etc/profile
执行source命令,使环境变量生效
source /etc/profile

执行java -version检查,如下表示环境变量已经生效,安装完成

7.修改hadoop配置文件
下载hadoop(版本选择了2.5.2)的包,并上传到master主机,此处使用的是sftp:

解压hadoop包到hadoop用户home目录
tar -xvf hadoop-2.5.2.tar.gz

进入hadoop配置目录
cd hadoop-2.5.2/etc/hadoop

配置core-site.xml文件
vi core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp</value>
<description> Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>

配置hdfs-site.xml文件
vi hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
配置mapred-site.xml文件,2.5.2版本中只看到有mapred-site.xml.template文件,复制模板文件生成mapred-site.xml
cp mapred-site.xml.template mapred-site.xml

vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master:50030</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>

配置yarn-site.xml
vi yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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>

配置slaves文件

配置hadoop-env.sh文件

配置java_home为jdk的安装目录
vi hadoop-env.sh

8.复制hadoop包到每个子节点,并启动hadoop
在主节点hadoop用户home目录,执行以下命令复制hadoop包到各个子节点:
scp -r ./hadoop-2.5.2 node1:~
scp -r ./hadoop-2.5.2 node2:~

格式化文件系统
cd hadoop-2.5.2

bin/hdfs namenode -format

关闭主节点和子节点防火墙,注意:此种方式重启主机防火墙 又会开启(如果不关闭,可以开启hadoop需要的所有端口,但操作相对麻烦)
service iptables stop

启动hadoop
cd sbin

./start-all.sh

9.检查hadoop进程
在各节点主机上执行jps命令,以下进程都存在,说明启动正常



访问hdfs状态界面和yarn资源管理界面

上传文件到hdfs看能否成功

10.配置hadoop环境变量
在/etc/profile文件的PATH变量中增加hadoop的bin目录,这样就可以在任意地方执行hadoop的命令,
而不必非要在hadoop的安装目录以bi/...的形式执行

11.启动jobhistory
hadoop jobhistory记录下已运行完的MapReduce作业信息并存放在指定的HDFS目录下,默认情况下是没有启动的,需要配置完后手工启动服务。
mapred-site.xml添加如下配置:

<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop000:10020</value>
<description>MapReduce JobHistory Server IPC host:port</description>
</property>

<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop000:19888</value>
<description>MapReduce JobHistory Server Web UI host:port</description>
</property>

<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>

<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/history/done_intermediate</value>
</property>

yarn-site.xml添加如下配置 (需要重启yarn):
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

执行启动jobhistory命令
mr-jobhistory-daemon.sh start historyserver(停止命令:mr-jobhistory-daemon.sh stop historyserver)

history-server启动之后,可以通过浏览器访问WEBUI: hadoop000:19888
在hdfs上会生成两个目录
hadoop fs -ls /history

drwxrwx--- - spark supergroup 0 2014-10-11 15:11 /history/done
drwxrwxrwt - spark supergroup 0 2014-10-11 15:16 /history/done_intermediate

12.解决tracking ui访问不了问题
如果tracking ui访问不了,是因为访问8088端口的主机解析不了集群的hostname所致,hosts文件中增加配置即可解决,如下: