Hadoop2.6.0安装详解(亲测有效)

环境

CentOS6.4 64位
Hadoop 2.6.0 (stable)
HBase 1.0.1.1(stable)
JDK 7.79
三台主机:一台Master(192.168.100.187),两台Slave(192.168.100.192,192.168.100.193)

准备工作

Hadoop 集群的安装配置大致为如下流程:
1. 选定一台机器作为 Master
2. 在 Master 主机上配置hadoop用户、安装SSH server、安装Java环境
3. 在 Master 主机上安装Hadoop,并完成配置
4. 在其他主机上配置hadoop用户、安装SSH server、安装Java环境
5. 将 Master 主机上的Hadoop目录复制到其他主机上
6. 开启、使用 Hadoop

网络配置(所有节点)

1、配置hadoop用户(root用户,所有节点):
1)新增用户组:
groupadd hadoop
2)新增名为hadoop的用户,并将其添加到hadoop组:
useradd –g hadoop Hadoop
3)修改用户hadoop的密码:
passwd hadoop
4)将 hadoop 增加为 sudo 用户:
visudo
找到 root ALL=(ALL)ALL,在之后新增一行:
hadoop ALL=(ALL) ALL
2、网络配置(所有节点)
1)首先改成NAT模式(虚拟机——可移动设备——网络适配器——设置)。
2)然后要把ip设置成手动的,其余参数按照要求设置,详情参考集群安装
2)如果没有ifconfig信息,那么就需要先设置网络为桥接模式,然后再将网络改回来NAT模式。
3、修改主机名(所有节点)
1)修改/etc/sysconfig/network
vim /etc/sysconfig/network
将HOSTNAME=localhost.localdomain,主节点上改为HOSTNAME=Master,从节点上分别改为HOSTNAME=Slave1和HOSTNAME=Slave1
2)vim /etc/hosts
所有节点上都增加:
192.168.100.187 Master
192.168.100.192 Slave1
192.168.100.193 Slave2
修改完之后所有节点都reboot

SSH无密码登录(hadoop用户,主节点)

1)安装ssh包
sudo yum -y install subversion expect openssh-server openssh
2)配置并且开启SSH服务
sudo chkconfig –add sshd
sudo chkconfig sshd on
sudo service sshd start
3)启用服务:
service iptables restart
4)在主节点上配置SSH
生成密钥:
ssh-keygen
把密钥复制到所有节点上:
ssh-copy-id –i ~/.ssh/id_rsa.pub hadoop@localhost
ssh-copy-id –i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id –i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id –i ~/.ssh/id_rsa.pub hadoop@slave节点IP
5)测试是否能ssh成功
ssh worker节点IP,成功之后记得logout

关闭防火墙与selinux(所有节点)

1)关闭防火墙
sudo chkconfig iptables off
sudo service iptables stop
2)关闭SELinux
sudo vim /etc/selinux/config
找到 SELINUX=enforcing/permissive 改为SELINUX=disabled

准备工作(root用户,所有节点)

1、下载hadoop-2.6.0.tar.gz,jdk-7u79-linux-x64.tar.gz,hbase-1.0.1.1-bin.tar.gz
2、将其解压至/usr/local
tar –xf hadoop-2.6.0.tar.gz –C /usr/local
tar –xf jdk-7u79-linux-x64.tar.gz –C /usr/local
tar –xf hbase-1.0.1.1-bin.tar.gz –C /usr/local/ hadoop-2.6.0
配置jdk环境(hadoop用户,所有节点)
cp -r /usr/local/jdk1.7.0_79 /usr/java
sudo vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

$source /etc/profile

配置集群/分布式环境(hadoop用户,主节点)

  集群/分布式模式需要修改 /usr/local/hadoop-2.6.0/etc/hadoop 中的5个配置文件,后四个文件可点击查看官方默认设置值,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml ;配置java环境也需要更改文件hadoop-env.sh
  
1, slave
1. cd /usr/local/hadoop-2.6.0/etc/hadoop
2. vim slaves
将原来 localhost 删除,把所有Slave的主机名写上,每行一个。例如我有两个 Slave节点,那么该文件内容就是:
Slave1
Slave2

2, core-site.xml
将原本的如下内容(复制时候记得把所有“<”右边的空格去掉,下面也一样):
< configuration>
< /configuration>
改为下面的配置。后面的配置文件的修改类似。
< configuration>
< property>
< name>fs.defaultFS< /name>
< value>hdfs://Master:9000< /value>
< /property>
< property>
< name>hadoop.tmp.dir< /name>
< value>file:/usr/local/hadoop-2.6.0/tmp< /value>
< description>Abase for other temporary directories.< /description>
< /property>
< /configuration>

3,hdfs-site.xml,因为只有两个Slave,所以dfs.replication的值设为2。
< property>
< name>dfs.namenode.secondary.http-address< /name>
< value>Master:50090< /value>
< /property>
< property>
< name>dfs.namenode.name.dir< /name>
< value>file:/usr/local/hadoop-2.6.0/tmp/dfs/name< /value>
< /property>
< property>
< name>dfs.datanode.data.dir< /name>
< value>file:/usr/local/hadoop-2.6.0/tmp/dfs/data< /value>
< /property>
< property>
< name>dfs.replication< /name>
< value>2< /value>
< /property>

4, mapred-site.xml,
这个文件不存在,首先需要从模板中复制一份:
1. cp mapred-site.xml.template mapred-site.xml
然后配置修改如下:
< property>
< name>mapreduce.framework.name< /name>
< value>yarn< /value>
< /property>

5,yarn-site.xml:
< property>
< name>yarn.resourcemanager.hostname< /name>
< value>Master< /value>
< /property>
< property>
< name>yarn.nodemanager.aux-services< /name>
< value>mapreduce_shuffle< /value>
< /property>

6, 文件hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_79

配置子节点

配置好后,用scp命令将 Master 上的 Hadoop 文件复制到各个节点上。
1. cd /usr/local
2. rm -rf ./hadoop-2.6.0/tmp # 删除 Hadoop 临时文件
3. scp –r ./hadoop-2.6.0 Slave1: /usr/local
4. scp –r ./hadoop-2.6.0 Slave2: /usr/local
在Slave1、Slave2上执行:
1. sudo chown -R hadoop:hadoop /usr/local/hadoop-2.6.0

启动hadoop

  1. cd /usr/local/hadoop-2.6.0/
  2. bin/hdfs namenode -format # 首次运行需要执行初始化,后面不再需要
  3. sbin/start-all.sh
    通过命令jps可以查看各个节点所启动的进程。
    可以看到Master节点启动了NameNode、SecondrryNameNode、ResourceManager进程。
    Slave节点则启动了DataNode和NodeManager进程。
    另外也可以在Master节点上通过命令bin/hdfs dfsadmin -report查看DataNode是否正常启动。

温馨提醒:通过查看启动日志分析启动失败原因
有时Hadoop集群无法正确启动,如 Master 上的 NameNode 进程没有顺利启动,这时可以查看启动日志来排查原因,比方说master是记录在 /usr/local/hadoop-2.6.0/logs/hadoop-hadoop-namenode-Master.log 中;
也可以通过Web页面看到查看DataNode和NameNode的状态,http://master:50070/

至此hadoop就全部装完了!其中hadoop报错及解决方法详见另一篇日志。

你可能感兴趣的:(hadoop,安装)