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
core-site.xml: <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>
yarn-site.xml: <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文件
内容:
masterslaves文件:
slave1 slave2
在Hadoop.2.7.3/下建文件夹
mkdir tmp name data
修改每台机器的 /etc/hosts文件
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/复制/etc/profile (记得要刷新环境变量)
上面配置了hosts文件此处就可以使用域名了
scp /etc/profile slave1:/etc/ scp /etc/profile slave2:/etc/复制hadoop文件夹到其他两台机器上 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
