Step1 查看每个机器的主机名和IP地址
在命令行输入ifconfig可以查看网络设备列表
设备中inet addr :后面的IP就是本机设置的IP地址
使用sudo vim /etc/hostname命令来查看当前机器的主机名(如果修改主机名,需要重启以后才能生效)
使用ping+IP地址的命令来检查每一个节点的网络是否通畅
修改每一个节点上的hosts,将每一个节点和IP地址加入到其中
命令行输入sudo vim /etc/hosts
Step2 配置ssh无密码访问每台机器
在命令行输入ssh localhost ,检查ssh协议是否开启或者配置成功
如果不能成功登陆,则需要安装openssh-server
然后输入ssh-keygen -t rsa -P "" ,生成密钥(期间直接按回车即可)
在保证每一台机器都能成功登陆本地节点以后,还需要让master节点免密码登录slave节点。在master执行命令,将master的id_rsa.pub传送给其他slave节点。scp ~/.ssh/id_rsa.pub project@ccrfox143:/home/project
然后在其他节点上,可以看到已经将id_rsa.pub传入到指定目录中
接着在slave节点上将master的公钥加入各自的节点上,在slave执行命令
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
然后在master节点上输入ssh+主机名就可以免密登陆到相应的主机上,确保每一个节点的用户名保持一致,如果每一个节点的用户名不同免密登陆需要在master修改~/.ssh/config文件,如果没有该文件,创建文件,然后文本编辑添加
Host master
user hadoop
Host slave1 //主机名
user project //用户名
Step3 安装JDK和Hadoop
在命令行输入sudo apt-get install default-jdk,从源获取JDK,然后输入vim ~/.bashrc,在环境变量末尾添加JAVA_HOME,然后输入source ~/.bashrc,使得修改生效。如果在Oracle上下载的JDK文件,在目录下解压,然后添加环境变量生效即可。
#JAVA_HOME
export JAVA_HOME=/home/project/jdk1.8.0_181 ##这里要注意目录要换成自己解压的jdk目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
然后输入java -version检查是否配置成功
Hadoop 可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载 “stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的文件,下载完毕后解压即可使用。仅在master下安装即可,配置完毕之后可以将文件发送到每一个slave上。
首先进入/hadoop/etc/hadoop,这个文件夹中包含了我们配置集群需要修改的文件。
1)修改slaves,在其中写入slave的主机名
ccrfox143
ccrfox146
ccrfox150
2)修改core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/project/hadoop-2.9.1/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ccrfox140:9000</value>
</property>
</configuration>
3)修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
4)修改mapred-site.xml。因为hadoop自带的只有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>
5)修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ccrfox140</value>
</property>
</configuration>
6)修改hadoop-env.sh中的JAVA_HOME
然后将hadoop文件夹压缩打包,分发到每一个节点上面
tar -zcf hadoop.tar.gz hadoop-2.9.1/
scp hadoop.tar.gz ccrfox143:/home/project
然后在每一个节点上执行
tar -zxf hadoop.tar.gz -C /home/project/
sudo chown -R project hadoop-2.9.1/
然后再在master和slave节点上对~/.bashrc修改,添加hadoo环境变量
#Hadoop
export HADOOP_HOME=/home/project/hadoop-2.9.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
记得,在修改完后输入source ~/.bashrc
Step4 启动Hadoop集群,测试
在master节点上执行
cd /home/project/hadoop-2.9.1
bin/hdfs namenode -format
sbin/start-all.sh
测试,在master和slave节点上分别输入jps
hadoop集群搭建成功~