Linux下安装Hadoop集群(三台一主二从)
准备环境:
安装三台Centos7虚拟机
集群规划
master | 192.168.113.130 | jdk、hadoop | namenode ressourcemanager |
slave1 | 192.168.113.131 | jdk、hadoop | datanode secondnamenode |
slave2 | 192.168.113.132 | jdk、hadoop | datanade |
设置Linux免登陆部分可以参考此博文中
http://blog.csdn.net/admin1973/article/details/60874923
这里直接用root用户,注意将防火墙关掉:
#关闭防火墙
sudo systemctl stop firewalld.service
#关闭开机启动
sudo systemctl disable firewalld.service
安装JDK请参考
http://blog.csdn.net/admin1973/article/details/60958326
新增了环境变量一定要记得运行
# 刷新配置文件
source /etc/profile
安装Hadoop:
先在master上安装,安装完后直接复制到其他两天机器上就OK了
解压:
tar -zvxf hadoop-2.7.2.tar.gz -C /home/leitao/software/hadoop/
删除doc:
cd /opt/soft/hadoop-2.7.2/sharerm -rf doc/
修改环境变量:
# 修改配置文件
vi /etc/profile
# 在最后下添加
export HADOOP_HOME=/home/leitao/software/hadoop/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
# 刷新配置文件
source /etc/profile
修改配置文件:
文件位于Hadoop-2.7.3/etc/hadoop/下
hadoop-env.sh:
export JAVA_HOME=/home/leitao/software/java/jdk1.8.0_91
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/leitao/software/hadoop/hadoop-2.7.2/tmp</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<!-- 设置namenode的http通讯地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!-- 设置secondarynamenode的http通讯地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<!-- 设置namenode存放的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/leitao/software/hadoop/hadoop-2.7.2/name</value>
</property>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 设置datanode存放的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/leitao/software/hadoop/hadoop-2.7.2/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
mapred-site.xml:
必须先:
mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<!-- 设置 resourcemanager 在哪个节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<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>
</configuration>
在hadoop2.7.3/etc/hadoop/下新建masters文件
内容:
master
slaves文件:
slave1
slave2
mkdir tmp name data
192.168.113.130 master
192.168.113.131 slave1
192.168.113.132 slave2
复制/etc/hosts(因为少了这个导致secondarynamenode总是在slave1启动不起来)
scp /etc/hosts 192.168.113.131:/etc/
scp /etc/hosts 192.168.113.132:/etc/
上面配置了hosts文件此处就可以使用域名了
scp /etc/profile slave1:/etc/
scp /etc/profile slave2:/etc/
scp -r /home/leitao/software/hadoop slave1:/home/leitao/software/
scp -r /home/leitao/software/hadoop slave2:/home/leitao/software/
记得在slave1和slave2上刷新环境变量
启动:
第一次启动得格式化:
./bin/hdfs namenode -format
启动dfs
./sbin/start-dfs.sh
启动yarn
./sbin/start-yarn.sh
查看:
master:
slave1:
slave2:
通过浏览器测试hdfs:
注意这里有数据才是成功,我因为没把hosts文件复制到其他主机,导致启动的进程都是正确的,但是这里就是没数据,后来查资料检查才是没复制hosts文件。复制之后就一切正常了
可以看到一切正常。2个节点。
至此我们的三台hadoop运行
参考资料:http://blog.csdn.net/uq_jin/article/details/51513307
http://blog.csdn.net/admin1973/article/details/60958326
http://blog.csdn.net/admin1973/article/details/60874923