centos6.7下的hadoop集群环境配置
一.系统配置
1.修改主机名
在所有的主机上修改/etc/sysconfig/network文件中的HOSTNAME=hadoop1(hadoop2、hadoop3等)
root权限下修改/etc/sysconfig/network:
vi /etc/sysconfig/network
source /etc/sysconfig/network #使文件network生效
2.配置IP地址
修改/etc/sysconfig/network-scripts/ifcfg-eth0,以hadoop1为例,修改后的信息如下:
查看mac地址:
cat /etc/udev/rules.d/70-persistent-net.rules
要修改得地方:BOOTPROTO,IPADDR,NETMASK,GATEWAY,DNS1,HWADDR
IPADDR=192.168.84.110
HWADDR="00:0C:29:23:C0:B2"
NETMASK=255.255.255.0
GATEWAY=192.168.84.2
DNS1=192.168.84.2
DNS2=8.8.8.8
改完后的例子:
DEVICE="eth0"#网卡名
BOOTPROTO="static" #修改静态地址
HWADDR="00:0C:29:23:C0:B2"#MAC地址
IPV6INIT="no"#禁用IPV6
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.84.110 #实际的IP地址,根据自己的网络情况进行设置
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.84.2 #网关
DNS1=192.168.84.2 #DNS,和网关一样
DNS2=8.8.8.8
UUID="476b3e36-f94f-4d6e-8835-93da6035a00f"
3.主机名与IP地址做映射
把所有节点的IP地址与主机名做映射后写入到/etc/hosts文件,然后分发到所有主机,样例如下:
vi /etc/hosts
127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1 localhostlocalhost.localdomain localhost6 localhost6.localdomain6
192.168.84.110 hadoop1
192.168.84.120 hadoop2
192.168.84.130 hadoop3 #ip地址根据自己得实际修改情况
4.关闭防火墙
在所有主机节点上关闭防火墙,命令如下:
service iptables stop
注意:对于centos 6.7 ,使用命令chkconfig iptables off关闭防火墙好像没用。
方便局域网中不同计算机之间的通信。(没有关闭防火墙的话,部分服务不能跨计算机进行访问,即部分端口是关闭的)
5.设置selinux
修改所有主机/etc/selinux/config文件SELINUX=disabled。
方便局域网中不同计算机之间的通信。
vi /etc/selinux/config
注意:SELinux 是部署在 Linux 系统中的安全增强功能模块,它通过对进程和文件资源采用 MAC(强制访问控制方式)为 Linux 系统提供了改进的安全性。
6.设置hadoop服务器集群各台服务器之间免密登录
1.在集群中所有服务器中的hadoop用户环境下,使用命令ssh-keygen -t rsa 生成密钥对;
ssh-keygen -t rsa
2.将所有用户生成的公钥放在一个文件authorized_keys之中;
3.将该文件拷贝到所有服务器下的/home/hadoop/.ssh之中;
4.将.ssh目录的权限设置为
chmod 700 .ssh
chmod 600 authorized_keys
注意:必须要修改目录以及文件权限
二.安装JDK
从网上下载jdk1.8以上64位linux版本。在此,我们安装jdk-1.8.0-8u60-linux-x64.rpm版
1.安装
rpm -ivh jdk-1.8.0-8u60-linux-x64.rpm
2.验证
java -version
若显示一下类似得信息,则说明安装成功:
java version "1.8.0_60"Java(TM) SE Runtime Environment (build 1.8.0_60-b27)Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
三.安装Hadoop
说明:本次实验我们定义的三台主机名分别为hadoop1、hadoop2、hadoop3对应的ip地址是根据我自己的环境来设置的,大家可以根据自己的实际情况来设置ip地址。
hadoop1(192.168.190.110) | hadoop2(192.168.190.120) | hadoop3(192.168.190.130) |
---|---|---|
NameNode | SecondaryNameNode | ResourceManager |
DataNode | DataNode | DataNode |
NodeManager | NodeManager | NodeManager |
1、Hadoop的下载和解压
我从网上下载Hadoop的安装包,然后在所有的主机上解压即可(本次我们下载的hadoop-2.6.0-cdh5.10.1.tar.gz)。解压命令如下:
tar -zxf /home/hadoop/Desktop/hadoop-2.6.0-cdh5.11.2.tar.gz -C /home/hadoop
注:这里的解压路径我选择的是/home/hadoop
解压后转换到/home/hadoop目录,我们发现当前目录下有个文件hadoop-2.6.0-cdh5.11.2,我们把它改下名字
mv hadoop-2.6.0-cdh5.11.2 hadoop
2、Hadoop系统环境变量的配置
在所有主机的/etc/profile文件中最后一行添加下边的信息
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
配置完后
source /etc/profile
注释:/home/hadoop/hadoop是Hadoop的解压路径
四.配置Hadoop
在所有的主机上做以下配置(也可以在一台主机上配置完后,拷贝到其他主机)。所有配置的都在/home/hadoop/hadoop/etc/hadoop目录下(Hadoop解压后目录里的etc/hadoop里)。
注意:以下四个配置文件的内容包含路径,目录等内容要对上自己的虚拟机。
1、core-site.xml的配置
<configuration>
<property>
<name>fs.defaultFS</name> #hdfs访问的唯一入口
<value>hdfs://hadoop1:8020</value>
</property>
</configuration>
2.hdfs-site.xml的配置
<configuration>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoopdata/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoopdata/dn</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:50070</value>
<description>
The address and the base port on which the dfsNameNode Web UI will listen.
</description>
</property>
<property>
<name>dfs.secondary.http-address</name>
<value>hadoop2:50090</value>
<description>
The address and the base port on which the dfsNameNode Web UI will listen.
</description>
</property>
</configuration>
3、mapred-site.xml配置
这个配置复杂一点,因为开始只提供了一个mapred-site.xml.template模板,所以要新建一个mapred-site.xml文件
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4、yarn-site.xml配置
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop3</value>
</property>
<property>
<description>Classpath for typical applications.</description>
<name>yarn.application.classpath</name>
<value>
$HADOOP_CONF_DIR,
$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/hadoop/hadoopdata/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/home/hadoop/hadoopdata/yarn/logs</value>
</property>
<property>
<name>yarn.log.aggregation-enable</name>
<value>true</value>
</property>
<property>
<description>Where to aggregate logs</description>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/home/hadoop/hadoopdata/log/hadoop-yarn/apps</value>
</property>
</configuration>
5.这里要创建几个文件夹,配置文件要用:
cd /home/hadoop
mkdir hadoopdata
cd hadoopdata
mkdir nn dn log yarn
6.添加JAVA_HOME到hadoop-env.sh文件里
export JAVA_HOME=/usr/java/jdk1.8.0_60
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
source hadoop-env.sh
五.格式化namenode
在namenode所在主机(我们本次所规划的hadoop1)执行命令
/home/hadoop/hadoop/bin/hdfs namenode -format
六.启动所有进程
我们的启动方式有两种,一种是单独启动,也就是分别进入到每一台主机,一个一个进程启动。另外一种是批量启动,也就是在任一主机上通过两个脚本就可以把所有进程全部拉起来。
1.单独启动
在/home/hadoop/hadoop/sbin目录下运行脚本
hadoop1:
cd /home/hadoop/hadoop/sbin
./hadoop-daemon.sh start namenode
./hadoop-daemon.sh start datanode
./yarn-daemon.sh start nodemanager
hadoop2:
cd /home/hadoop/hadoop/sbin
./hadoop-daemon.sh start secondarynamenode
./hadoop-daemon.sh start datanode
./yarn-daemon.sh start nodemanager
hadoop3:
cd /home/hadoop/hadoop/sbin
./hadoop-daemon.sh start datanode
./yarn-daemon.sh start resourcemanager
./yarn-daemon.sh start nodemanager
如果能通过jps命令显示以下类似的结果说明节点启动成功:
jps
3145 NodeManager
3018 NameNode
3068 DataNode
3183 Jps
2、 批量启动
分别进入hadoop1和hadoop3中的/root/hadoop-2.6.0-cdh5.10.1/sbin目录后,在hadoop1中执行./ start-dfs.sh,在hadoop3中执行./start-yarn.sh。
七.验证集群是否成功
1、 通过web界面来查看集群:
在浏览器中输入http://hadoop1:50070和http://hadoop3:8088,能够看到如下界面,说明机器启动成功
下面的命令表示分别在hadoop1和hadoop3中操作,具体的原因可以看以上四个配置文件
hadoop1:
http://hadoop1:50070
hadoop3:
http://hadoop3:8088