Hadoop2.4.1集群配置(无Zookeeper版)
【说明:】
本次安装使用CentOS6.5_x86
所用的JDK与hadoop2.4.1也均为32位
此次配置,并未使用Zookeeper
一、 准备Linux系统
用户全称:Cloud
用户名: hadoop
密码: hadoop
NameNode: CentOS001 192.168.35.50
Secondary: CentOS002 192.168.35.51(预留,以后改配热备用)
DataNode: CentOS003 192.168.35.52
CentOS004 192.168.35.53
CentOS005 192.168.35.54
#所用虚拟机NAT网关为192.168.35.2
【注】Linux主机命名时不要有下划线,否则hadoop无法正常启动
首先在Master(即NameNode)上进行相关安装与配置
所有机器均需修改主机名,配置IP,配置IP与主机名的映射,关闭防火墙
JDK和Hadoop可通过scp复制到其他机器
【注:】所有机器上均需配置$JAVA_HOME和$HADOOP_HOME
二、 修改Linux主机名
root身份下,修改Linux主机名
#vi /etc/sysconfig/network
修改HOSTNAME为CentOS001
三、 修改IP地址
通过图形界面修改IP地址
IPv4->method选择manual->IP:192.168.1.50,子网掩码:24,网关:192.168.1.1,DNS:192.168.1.1
也可以通过命令行修改配置文件
$vi /etc/sysconfig/network-scripts/ifcfg-eth0,如:
DEVICE="eth0"
BOOTPROTO=none
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="b0a5c608-02b0-4573-8a2d-5a53e3bdfe50"
IPADDR=192.168.35.50
PREFIX=24
GATEWAY=192.168.35.2
DNS1=192.168.1.1
NAME="System eth0"
HWADDR=00:0C:29:BF:77:A2
随后重启网络服务
#service network restart
四、 修改主机名与IP映射关系
#vi /etc/hosts ,添加hostname与ip映射如下:
192.168.35.50 CentOS001
192.168.35.51 CentOS002
192.168.35.52 CentOS003
192.168.35.53 CentOS004
192.168.35.54 CentOS005
五、 关闭防火墙
用root用户进行设置
查看防火墙状态
#service iptables status
关闭防火墙
#service iptables stop
查看防火墙开机启动状态
#chkconfig iptables --list
关闭防火墙开机启动
#chkconfig iptables off
重启系统
#reboot
六、 不启用图形界面(省资源)
root用户下修改图形界面启动配置
#vi /etc/inittab,修改为id:3:initdefault:
以后想启动,#startx或init5即可
七、 安装JDK
下载相应版本的JDK,并解压
$ tar -zxvf jdk-7u65-linux-i586.tar.gz
把解压的文件放到/home/hadoop/app文件夹
$mv jdk1.7.0_65/ ../app/
用root用户身份,将JAVA添加到环境变量中
#vi /etc/profile,在文件末尾添加内容如下:
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
export PATH=$PATH:$JAVA_HOME/bin
保存文件,刷新配置
[$/#] source/etc/profile
八、 安装Hadoop
下载相应版本的Hadoop,并解压
$ tar -zxvf hadoop-2.4.1.tar.gz
把解压的文件放到/home/hadoop/app文件夹
$mv hadoop-2.4.1/ ../app/
把hadoop添加到环境变量
$vi /etc/profile,添加HADOOP_HOME,内容如下:
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
$source /etc/profile令配置生效
找到hadoop-2.4.1/etc/hadoop/目录,修改配置hadoop文件
$cd hadoop-2.4.1/etc/hadoop/
² 配置Hadoop
Ø hadoop-env.sh
修改hadoop-env.sh文件
$vi hadoop-env.sh,修改JAVA_HOME变量如下:
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
Ø core-site.xml(未添加ZooKeeper版)
修改core-site.xml配置文件
$vi core-site.xml,添加如下内容:
<configuration>
<!--URI of the HDFS NameNode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://CentOS001:9000</value>
</property>
<!--Temporary dir of Hadoop Runtime-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/tmp</value>
</property>
</configuration>
Ø hdfs-site.xml(未配置zookeeper版)
修改hdfs-site.xml配置文件
$ vi hdfs-site.xml,配置内容如下:
<configuration>
<!--Name Services-->
<!--(用于StandbyNameNode热备节点,HA功能依赖于Zookeeper)
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster</value>
</property>
-->
<!--Name Node-->
<property>
<name>dfs.namenode.http-address</name>
<value>CentOS001:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/dfs/name</value>
</property>
<!--Secondary Name Node-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>CentOS002:50090</value>
</property>
<!--Data Node-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/dfs/data</value>
</property>
<!--Replication-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--Web HDFS-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
Ø mapred-site.xml
修改文件名,创建mapred-site.xml文件
$mv mapred-site.xml.template mapred-site.xml
执行$ vi mapred-site.xml,配置MapReduce内容如下:
<configuration>
<!--Set MapReduce Framework-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Ø yarn-site.xml(未配置Zookeeper版)
修改yarn-site.xml,配置yarn框架
$ vi yarn-site.xml,修改配置如下:
<configuration>
<!-- Site specific YARN configuration properties-->
<!-- 指定ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>CentOS001</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Ø 修改slaves文件
$vi slaves,修改内容如下:
CentOS003
CentOS004
CentOS005
九、 配置SSH免密钥登录
NameNode与各DataNode之间要配置ssh免密码登录
SecondaryNameNode与各DataNode之间要配置ssh免密码登录
NameNode与SecondaryNameNode之间要配置ssh免密码登录
具体配置步骤如下:
在CentOS001上生成一对密钥
$ ssh-keygen -t rsa
将公钥拷贝到其他节点,包括自己
$ ssh-copy-id CentOS001
$ ssh-copy-id CentOS002
$ ssh-copy-id CentOS003
$ ssh-copy-id CentOS004
$ ssh-copy-id CentOS005
在CentOS002上生成一对密钥
$ ssh-keygen -t rsa
将公钥拷贝到其他节点,包括自己
$ ssh-copy-id CentOS001
……
$ ssh-copy-id CentOS005
在所有DataNode(CentOS003~005)节点上,生成一对密钥
$ ssh-keygen -t rsa
将公钥拷贝到CentOS001和CentOS002
$ ssh-copy-id CentOS001
$ ssh-copy-id CentOS002
实现NameNode与DataNode之间的ssh无密码互联
十、 SCP配置好的JDK与Hadoop
将配置好的JDK与Hadoop拷贝到其他节点
$ scp -r app/ hadoop@CentOS002:~/app/
$ scp -r app/ hadoop@CentOS003:~/app/
$ scp -r app/ hadoop@CentOS004:~/app/
$ scp -r app/ hadoop@CentOS005:~/app/
十一、 启动Hadoop
² 格式化HDFS
在CentOS001上执行
$ hdfs namenode -format
格式化后,也会根据hdfs-site.xml中的dfs.namenode.name.dir和dfs.datanode.data.dir生成一个文件
启动后,会根据core-site.xml中的hadoop.tmp.dir配置生成一个文件
² 启动HDFS
$sbin/start-dfs.sh
² 启动YARN
$sbin/start-yarn.sh
【注:】可用$sbin/start-all.sh启动所有服务