首先用VMWare新建三个虚拟机,分别安装centos系统,用户名统一为hadoop
一、 配置hosts文件
![](https://i-blog.csdnimg.cn/blog_migrate/c35fe317afd15534a10f5668649b977d.png)
三个虚拟机统一修改,修改后重启服务器
二、安装jdk
- 解压jdk压缩包
tar -xzvf jdk-8u112-linux-x64.gz
![](https://i-blog.csdnimg.cn/blog_migrate/6e5922c38276857370d209bde8d30766.png)
- 更改解压后文件夹名称为java
mv jdk1.8.0_112 java
- 配置jdk环境变量
修改/etc/profile需切换到root用户下完成 su root
[root@master hadoop]# vi /etc/profile
添加如下内容:
#set java environmentJAVA_HOME=/home/hadoop/javaJRE_HOME=/home/hadoop/java/jreCLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binexport JAVA_HOME JRE_HOME CLASS_PATH PATH
让修改立即生效:
[root@master hadoop]# source /etc/profile
三、配置ssh免密码连接
- 在master上生成公钥和私钥
ssh-keygen -t rsa 一路狂按回车,最终生成(id_rsa,id_rsa.pub两个文件).
- 把master的公钥分别添加到node1、node2、master服务器的authorized_keys文件中
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@node1
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@node2
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
在每台服务器把这三条命令执行一遍。
四、下载解压hadoop安装包并配置环境变量
- 解压hadoop
tar -xzvf hadoop-2.5.2.tar.gz //解压
mv hadoop-2.5.2 hadoop2 //更改文件夹名称
- 配置hadoop环境变量
vi etc/profile //编辑profile在文件底部添加如下内容
JAVA_HOME=/home/hadoop/java
JRE_HOME=/home/hadoop/java/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
HADOOP_HOME=/home/hadoop/hadoop2
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
#HADOOP VARIABLES START
export HADOOP_INSTALL=/home/hadoop/hadoop2
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END
五、
配置
hadoop-env.sh
[hadoop@master hadoop]$ cd /home/hadoop/hadoop2/etc/hadoop
[hadoop@master hadoop]$ vi hadoop-env.sh //在文件末尾添加如下内容
export JAVA_HOME=/home/hadoop/java
[hadoop@master hadoop]$ source hadoop-env.sh //使修改内容立即生效
六、配置
yarn-env.sh
[hadoop@master hadoop]$ vi yarn-env.sh//在文件末尾添加如下内容
export JAVA_HOME=/home/hadoop/java
[hadoop@master hadoop]$ source yarn-env.sh //使修改内容立即生效
七、配置slaves文件
[hadoop@master hadoop]$ vi slaves //添加数据节点
node1
node2
八、配置namenode,修改site文件
- 配置core-site.xml文件
先在hadoop2目录下建立 tmp
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value> file:/home/hadoop/hadoop2/tmp </value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
![core-site.xml core-site.xml](https://i-blog.csdnimg.cn/blog_migrate/994c30431300705b5235ccfe5aaef9f4.png)
- 配置hdfs-site.xml文件
配置之前先在hadoop下建立 dfs/name,dfs/data 目录
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value> /home/hadoop/hadoop2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value> /home/hadoop/hadoop2/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
![hdfs-site.xml hdfs-site.xml](https://i-blog.csdnimg.cn/blog_migrate/949b75c5d6223668d319468b051c24e3.png)
- 配置mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
</configuration>
![mapred-site.xml mapred-site.xml](https://i-blog.csdnimg.cn/blog_migrate/280c4e9b907b09c25ddd8a6961717423.png)
- 配置yarn-site.xml文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
![yarn-site.xml yarn-site.xml](https://i-blog.csdnimg.cn/blog_migrate/faa512b5dcbe4ab8610df78f9acf6c66.png)
八、向各节点复制hadoop
scp -r /home/hadoop/hadoop2 hadoop@node1:/home/hadoop
scp -r /home/hadoop/hadoop2 hadoop@node2:/home/hadoop
九、配置防火墙
配置hadoop相关端口,例如本人配置的9000、9011、50030端口(还有很多其它默认端口)
/sbin/iptables -I INPUT -p tcp --dport 9000 -j ACCEPT #开启8011端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
鉴于各个版本端口不一样,简单粗暴的方式直接关闭防火墙
关闭防火墙方法如下
1) 重启后生效
关闭: chkconfig iptables off
2) 即时生效,重启后失效
关闭: service iptables stop
(本人在未配置防火墙且未关闭防火墙的情况下启动hadoop,发现node1、node2服务器下 TaskTracker DataNode服务不能正常启动报错如下)
查看/home/hadoop/hadoop/hadoop-hadoop-datanode-node2.log日志报错如下
![](https://i-blog.csdnimg.cn/blog_migrate/0f53bbbfe2867a6e60c51b9f84e43b5d.png)
十、格式化namenode
这一步也在主结点
master
上进行操作:
[hadoop@master conf]$ hadoop namenode -format
十一、启动hadoop
可以使用start-all.sh启动
不过推荐分别使用
start-dfs.sh、start-yarn.sh进行启动
[hadoop@master hadoop]$start-dfs.sh
[hadoop@master hadoop]$start-yarn.sh
十二、用jps检验各后台进程是否成功启动
107服务器查看
![](https://i-blog.csdnimg.cn/blog_migrate/e4ab151ed75754627939ab7410845778.png)
105服务器查看
![](https://i-blog.csdnimg.cn/blog_migrate/e8efe298e1ebe5392691283e5601246a.png)
十三、通过浏览器访问
(如果是在windows下访问,则需要在C:\Windows\System32\drivers\etc\hosts添加192.168.1.107 master,或者直接访问
http://192.168.1.107:50070/)
注意事项:
第一次运行stat-dfs报错
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
在网上搜索资料发现是系统中的glibc的版本和libhadoop.so需要的版本不一致导致
运行
yum install glibc*
后更新glibc版本即可