Hadoop完全分布式集群搭建
现在我们来搭建一个完全分布式的hadoop集群
首先,在虚拟机中创建三台linux6.8版本的机器,最好使用NAT连接(静态ip比较方便)
主机名分别为master、slave1、slave2…………
一、ssh免密互通和关闭防火墙
首先,在普通用户下创建本机的公钥和私钥,三台机器都需要创建
(一路回车enter)
所创建的公钥和私钥在/home/用户名/.ssh目录下
复制所创建的公钥 id_rsa.pub 为 authorized_keys :cp id_rsa.pub authorized_keys
将authorized_keys复制到slave1中的.ssh目录下:scp authorized_keys (slave1的普通用户名)@(slave1的ip):~/.ssh
把slave1的公钥追加到authorized_keys中:cat id_rsa.pub >> authorized_keys
此时authorized_keys中有master和slave1的公钥
将slave1中的authorized_keys复制到slave2中:scp authorized_keys (slave2的普通用户名)@(slave2的ip):~/.ssh
把slave2的公钥追加到authorized_keys中:cat id_rsa.pub >> authorized_keys
此时authorized_keys中有master、slave1和slave2的公钥
将slave2中的authorized_keys分别复制到slave1和master中并覆盖原有的authorized_keys,运行图片如下
此时,ssh免密登录已经配置完成,三台机器可以互相免密登录
可以在master中测试登录:
三台机器都需要关闭防火墙:chkconfig iptables off
(关闭后需要重启机器)
二、搭建集群
1、安装jdk和hadoop
在主目录下(/home/用户名)创建apps目录和soft目录:mkdir apps soft
在普通用户下导入jdk、hadoop,存放在apps中,解压即可: tar -zxvf 文件名.tar.gz
进入到soft目录中,创建jdk和hadoop目录的软链接:ln -s ~/apps/jdk jdk.soft
ln -s ~/apps/hadoop hadoop.soft
2、配置环境变量
进入到超级管理员下:su root
打开环境变量文件:vi /etc/profile
进入后添加jdk的环境变量:
export JAVA_HOME=/home/liyaoun/soft/jdk.soft
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
和hadoop的环境变量
HADOOP_HOME=/home/liyaocun/soft/hadoop.soft
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport
PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
添加完成后执行配置文件:source /etc/profile
使用java -version查看java环境是否配置成功。
3、修改hadoop相关配置文件
文件所在路径:(/home/用户名/apps/hadoop/etc/hadoop/)
core-site.xml
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/liyaocun/apps/hadoop/tmp</value>为自己创建的tmp目录所在的绝对路径
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
</configuration>
hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME} 此行为原有行,应注释
export JAVA_HOME=/home/liyaocun/soft/jdk.soft 路径为java_home 所在的绝对路径
hdfs-site.sh
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/liyaocun/apps/hadoop/dfs/name</value> #自己创建的dfs目录下的name的绝对路径
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/liyaocun/apps/hadoop/dfs/data</value>#自己创建的dfs目录下的data的绝对路径
</property>
</configuration>
mapred-site.xml
将mapred-site.xml.template 复制为 mapred-site.xml 后进行更改:cp mapred-site.xml.template mapred-site.xml
<!-- Put site-specific property overrides in this file. --><configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</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>
</configuration>
yarn-site.xml
<configuration><!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
slaves
localhost #此行删除192.168.137.131 #slave1的ip
192.168.137.133 #slave2的ip
/etc/hosts(需要root权限)
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.131 slave1
192.168.137.132 master
192.168.137.133 slave2
到此hadoop相关文件配置完成
4、设置slave1、slave2
a、将根目录下的apps复制到子节点机上
scp -r /home/liyaocun/apps [email protected]:/home/liyaocun/
复制apps到slave1中 -r为复制目录
scp -r /home/liyaocun/apps [email protected]:/home/liyaocun/
复制apps到slave2中
b、分别在子节点机上创建soft目录并在soft目录下创建jdk和hadoop的软链接
ln -s ~/apps/jdk jdk.soft
ln -s ~/apps/hadoop hadoop.soft
c、将环境变量和hosts文件复制到子节点机(需要root权限)
scp /etc/profile [email protected]:/etc/profile
scp /etc/profile [email protected]:/etc/profile
scp /etc/hosts [email protected]:/etc/hosts
scp /etc/hosts [email protected]:/etc/hosts
5、格式化文件系统
在master机器上格式化文件系统
注意:一定要确保上述内容都完毕后再执行,能且仅能执行一次,否则出错
hdfs namenode -format
6、启动hadoop集群
在master中的任意位置执行:start-all.sh(开启集群)/stop-all.sh(关闭集群)
执行后无误后如下
查看进程:jps
在物理机中的浏览器上输入: 192.168.137.132(master的ip):50070(端口号)
查看 LiveNodes 是否为 2
如果结果为2,那么恭喜你,hadoop完全分布式集群搭建成功!!!