搭建准备
安装环境以及软件版本
-
虚拟机:VMware-12.5.2
-
操作系统:linux-centos6.8-64位
-
jkd:linux-jdk-7u79-64位
-
hadoop版本:hadoop-2.7.1
-
三台机器:
master:192.168.1.149
node2:192.168.1.150
node3:192.168.1.151
修改主机名(非必要)
-
修改hostname
vi /etc/sysconfig/network -
保存退出
Esc:wq -
重启生效
reboot -
主机名修改成功
-
三个节点上都配置hosts文件
vi /etc/hosts -
保存退出
Esc:wq
配置ssh免密码登录
因为Hadoop需要通过SSH登录到各个节点进行操作,我用的是root用户,每台服务器都生成公钥,再合并到authorized_keys
-
centos默认没有启动ssh免密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置
vim /etc/ssh/sshd\_config将三台机器以下两句的注释解开
#RSAAuthentication yes
#PubkeyAuthentication yes
-
输入命令
ssh-keygen -t rsa生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置
-
合并公钥到authorized_keys文件,在Master服务器,进入/root/.ssh目录,通过SSH命令合并
cd /root/.ssh/ cat id\_rsa.pub>> authorized\_keys ssh root@192.168.1.150 cat ~/.ssh/id\_rsa.pub>> authorized\_keys ssh root@192.168.1.151 cat ~/.ssh/id\_rsa.pub>> authorized\_keys -
把master服务器的authorized_keys,known_hosts复制到slave服务器的/root/.ssh目录
scp -r authorized\_keys known\_hosts root@192.168.1.150:/root/.ssh/ scp -r authorized\_keys known\_hosts root@192.168.1.151:/root/.ssh/ -
完成,
ssh root@192.168.1.150,ssh root@192.168.1.151就不需要输入密码了
安装jdk
注意:每台服务器都要安装
-
在/home目录下新建两个文件夹java hadoop
-
将jdk放在java文件夹中并解压配置环境变量
-
首先卸载自带的jdk
-
查看jkd
rpm -qa | grep jdk -
卸载
rpm -e复制查出来的第一行 例rpm -e java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86\_6 -
解压
tar -zxvf jdk-7u79-linux-x64.tar.gz -
进入解压文件夹并
pwd复制路径
-
编辑配置环境变量
vim /etc/profile并添加如下图所示
export JAVA\_HOME=/home/java/jdk1.7.0\_79 export CLASSPATH=.:$JAVA\_HOME/jre/lib/rt.jar:$JAVA\_HOME/lib/dt.jar:$JAVA\_HOME/lib/tools.jar export PATH=$PATH:$JAVA\_HOME/bin -
保存退出
Esc:wq -
使环境变量生效
source /etc/profile -
查看jdk
java -version
下载安装hadoop
-
将下载的hadoop文件放在/home/hadoop用户的根目录下,接着开始解压
-
解压
tar -zxvf hadoop-2.7.1.tar.gz -
在/home/hadoop目录下创建数据存放的文件夹tmp,hdfs,hdfs/data,hdfs/name
mkdir tmp hdfs hdfs/data hdfs/name -
修改配置文件(在master主节点中配置)
请注意:主节点(master)上面的文件如果修改一定要覆盖另外两个节点(node2,node3)
scp -r /home/hadoop/hadoop-2.7.1/etc/hadoop/* root@192.168.1.150:/home/hadoop/hadoop-2.7.1/etc/hadoop/ scp -r /home/hadoop/hadoop-2.7.1/etc/hadoop/* root@192.168.1.151:/home/hadoop/hadoop-2.7.1/etc/hadoop/分别是core.site.xml,hdfs-site.xml,mapred-site.xml,hadoop-env.sh,yarn-env.sh,slaves文件
-
进入此文件夹下
cd /home/hadoop/hadoop-2.7.1/etc/hadoop/ -
编辑
vim core-site.xml添加
<property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.149:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value>131702</value> </property> -
编辑
vim hdfs-site.xml添加
<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.support.append</name> <value>true</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hdfs/name</value> </property> <property> <name>dfs.blocksize</name> <value>1048576</value> </property> <property> <name>file:dfs.datanode.data.dir</name> <value>file:/home/hadoop/hdfs/data</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property><property> <name>dfs.http.address</name> <value>192.168.1.149:50070</value> <description> The address and the base port where the dfs namenode web ui will listen on. If the port is 0 then the server will start on a free port. </description> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>192.168.1.150:50090</value> </property> -
编辑
vim mapred-site.xml添加注意:这里可能没有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> <property> <name>mapreduce.jobhistory.address</name> <value>192.168.1.149:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>192.168.1.149:19888</value> </property> <property> <name>mapreduce.tasktracker.map.tasks.maximum</name> <value>10</value> </property> <property> <name>mapreduce.tasktracker.reduce.tasks.maximum</name> <value>4</value> </property> </configuration> -
配置hadoop-env.sh,yarn-env.sh两个文件下的JAVA_HOME
export JAVA\_HOME=/home/java/jdk1.7.0\_79 -
最后配置slaves文件,删除默认的localhost,增加2个从节点
192.168.1.150
192.168.1.151
-
将配置好的Hadoop复制到各个节点对应位置上,通过scp传送
scp -r /home/hadoop/ 192.168.1.150:/home/ scp -r /home/hadoop/ 192.168.1.151:/home/ -
在master服务器启动hadoop,从节点会自动启动,进入/home/hadoop/hadoop-2.7.0目录
-
初始化
bin/hdfs namenode -format -
全部启动
sbin/start-all.sh也可以分开
sbin/start-dfs.sh sbin/start-yarn.sh -
停止
sbin/stop-all.sh -
输入命令
jps可以看到相关信息 -
以下节点全部启动才是正确的:
注意:namenode和SecondaryNameNode不能再同一个服务器上,上面我已经做了配置,效果如下
-
测试,浏览器输入:
192.168.1.149:8088 -
输入
192.168.1.149:50070可以看到以下datanodes是两个,如果是0那就是没配好