一 安装环境:
三台云服务器,我使用的是华为云
一台为centos7,主机名:master,ip:192.168.0.1
另外两台为centos6.5,主机名分别为node1、node2,ip分别为192.168.0.2,192.168.0.3。
hadoop版本:hadoop-2.7.6.tar.gz
java jdk版本:jdk-8u171-linux-x64.tar.gz
大家根据实际情况自行选择,linux系统版本没有什么影响
二 配置SSH 免密码登录:
2.1 检查机器名称
为了后续操作方便,确保机器的hostname是我们想要的。拿192.168.0.1这台机器为例,用root账户登录,然后使用
hostname
命令查看机器名称,如果不是master,使用命令:
hostname master
修改为master。笔者在使用过程中有时候会发现重启服务器会导致名字重置为默认,此时参考此博客自行修改就可以。
使用相同的方法修改其他两台机器的名字分别为node1和node2。
完成以上操作后,修改这3台机器的/etc/hosts文件,在文件中添加以下内容:
vim /etc/hosts
#在文件中添加以下三行内容
192.168.0.1 master
192.168.0.2 node1
192.168.0.3 node2
说明:IP地址没必要和我的一样,这里只是做一个映射,只要映射是对的就可以,至于修改方法,可以用vim命令,也可以在你的本地机器上把hosts文件内容写好后,拿到Linux机器上去覆盖。
配置完成后使用ping命令检查这3个机器是否相互ping得通,以master为例,执行命令:
ping -c 3 node1
可以查看是否能够ping的通。
2.2 给3台机器生成秘钥文件
以master为例,执行命令,生成空字符串的秘钥(后面要使用公钥),命令是:
ssh-keygen -t rsa -P ''
遇到需要输入的时候直接按回车即可。
因为我现在用的是root账户,所以秘钥文件保存到了/root/.ssh/目录内,可以使用命令查看,命令是:
ls /root/.ssh/
2.3在master上创建authorized_keys文件
接下来要做的事情是在3台机器的/root/.ssh/目录下都存入一个内容相同的文件,文件名称叫authorized_keys,文件内容是我们刚才为3台机器生成的公钥。为了方便,我下面的步骤是现在master上生成authorized_keys文件,然后把3台机器刚才生成的公钥加入到这个master的authorized_keys文件里,然后在将这个authorized_keys文件复制到node1和node2上面。
首先使用命令,在master的/root/.ssh/目录中生成一个名为authorized_keys的文件,命令是:
touch /root/.ssh/authorized_keys
其次将master上的/root/.ssh/id_rsa.pub文件内容,node1上的/root/.ssh/id_rsa.pub文件内容,node2上的/root/.ssh/id_rsa.pub文件内容复制到这个authorized_keys文件中,复制的方法很多了,可以用cat命令和vim命令结合来弄,也可以直接把这3台机器上的/root/.ssh/id_rsa.pub文件下载到本地,在本地将authorized_keys文件编辑好在上载到这3台机器上。
2.4将authorized_keys文件复制到其他机器
master机器的/root/.ssh/目录下已经有authorized_keys这个文件了,该文件的内容也已经OK了,接下来要将该文件复制到node1的/root/.ssh/和node2的/root/.ssh/。
2.4测试使用SSH免密登录
在master机器上输入
ssh node1
ssh node2
查看是否能够分别登录进入,注意需要退出到原机器使用命令
exit
并按回车。
三 安装JDK
请参考的我的另外一篇博客
注意:需要在三台机器都进行此操作,都安装上jdk
四 安装HADOOP2.7
1,下载Hadoop2.7
下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz
2,解压安装
1)复制 hadoop-2.7.6.tar.gz 到/usr/local/目录下,
然后使用命令
tar -zxvf hadoop-2.7.6.tar.gz
解压,解压后目录为:/usr/local/hadoop-2.7.6
2)在/usr/local/hadoop-2.7.6/目录下,建立tmp、hdfs/name、hdfs/data目录,执行如下命令
#mkdir /root/hadoop/tmp
#mkdir /root/hadoop/hdfs
#mkdir /root/hadoop/hdfs/data
#mkdir /root/hadoop/hdfs/name
3)输入 vim /etc/profile,配置环境变量,输入以下内容,保存退出
HADOOP_HOME=/usr/local/hadoop-2.7.3/
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
输入
source /etc/profile
使环境变量生效
3)进入/usr/local/hadoop-2.7.6/etc/hadoop中分别配置以下文件。
(1)输入 vi hadoop-env.sh 修改配置文件
将原有的JAVA_HOME注释掉,根据自己的JDK安装位置,精确配置JAVA_HOME如下,保存并退出
export JAVA_HOME=/usr/local/java/jdk1.8.0_102/
(2)输入 vim yarn-env.sh修改配置文件
在里面添加如下内容:export JAVA_HOME=/usr/local/java/jdk1.8.0_102
(3)输入vim core-site.xml修改配置文件
在configuration标签中,添加如下内容,保存并退出,注意这里配置的hdfs:master:9000是不能在浏览器访问的
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<description>HDFS的URI</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.6/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
如图所示:
(4)输入vim hdfs-site.xml修改配置文件:
在configuration标签中,添加如下内容,保存并退出
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.7.6/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.7.6/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
(5)输入 cp mapred-site.xml.template mapred-site.xml 将mapred-site.xml.template文件复制到当前目录,并重命名为mapred-site.xml
输入 vim mapred-site.xml修改配置文件,在configuration标签中,添加如下内容,保存并退出
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>指定mapreduce使用yarn框架</description>
</property>
(6)输入 vi yarn-site.xml 修改配置文件
在configuration标签中,添加如下内容,保存并退出
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
<description>指定resourcemanager所在的hostname</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序</description>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8099</value>
</property>
(7)输入 vi slaves 修改配置文件
将localhost删掉,加入如下内容,即dataNode节点的主机名
node1
node2
注:上面所有的设置和配置在所有的云服务器上都要设置,且设置内容都一样。
五 启动Hadoop
(1)在master机器上,任意目录输入 hdfs namenode -format 格式化namenode,第一次使用需格式化一次,之后就不用再格式化,如果改一些配置文件了,可能还需要再次格式化。
格式化完成
(2)在master机器上,进入hadoop的sbin目录,输入 ./start-all.sh 启动hadoop
输入yes,回车
(3)输入 jps 查看当前java的进程,该命令是JDK1.5开始有的,作用是列出当前java进程的PID和Java主类名,nameNode节点除了JPS,还有3个进程,启动成功
(4)在node1机器和node2机器上分别输入 jps 查看进程如下,说明配置成功
(5)在浏览器访问nameNode节点的8088端口和50070端口可以查看hadoop的运行状况
(6)在master机器上,进入hadoop的sbin目录,输入 ./stop-all.sh 关闭hadoop