Hadoop集群的安装与配置
前言
1、此次过程中所以操作都要在root下完成
2、虽然此次安装使用的是hadoop-2.9.1,但是推荐安装hadoop-2.7.3版本
3、hadoop最好只初始化一次,否则很容易出现各类问题
4、建议在hadoop初始化前,克隆一个master和slave,避免悔之不及
5、如在初始化后,hadoop存在初始化多次问题,建议重装
提示:以下是本篇文章正文内容
1. VmWare 15安装 CentOS7
新建虚拟机
master
ip:192.168.119.135
网关:192.168.119.2
子网掩码:255.255.255.0
2. Linux设置
修改主机名称和网络名称:
[root@master ~]# vim /etc/hosts
在最后添入以下两行
192.168.119.135 master
192.168.119.136 slave
[root@master ~]# vim /etc/sysconfig/network
NETWOEKING=yes
HOSTNAME=master
关闭防火墙:
关闭:[root@master ~]# systemctl stop firewalld.service
禁止开机启动:[root@master ~]# systemctl disable firewalld.service
查看状态:[root@master ~]# firewall-cmd --state
关闭selinux
[root@master ~]# vim /etc/selinux/config
关闭前:
关闭后:
3. 安装 JDK
JDK-8u261
提取码:h91o
查看
[root@master ~]# rpm -qa|grep jdk
卸载系统自带的JDK
yum -y remove java java-1.8.0
将下载好的jdk通过xshell拖动到指定的文件夹中并将其解压
在root下创建文件夹java:
[root@master usr]# mkdir java
将jdk解压到/usr/java/:
[root@master java]# tar -zxvf jdk-8u261-linux-x64.tar.gz
将压缩包删除:[root@master ~]# rm -rf jdk-8u221-linux-x64.tar.gz
配置环境
[root@master ~]# vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_261
JRE_HOME=/usr/java/jdk1.8.0_261/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME
export JRE_HOME
export CLASS_PATH
export PATH
[root@master ~]# source /etc/profile
[root@master ~]# java -version
4. 配置Hadoop集群
hadoop-2.7.3
提取码:ag76
hadoop-2.9.1
提取码:27eq
解压
将下载好的hadoop通过xshell拖动到master中
在home下创建文件夹hadoop:[root@master home]# mkdir hadoop
将hadoop解压到/home/hadoop/:[root@master hadoop]# tar -zxvf hadoop-2.9.1.tar.gz
配置环境
[root@master ~]# vim /etc/profile
export HADOOP_HOME=/home/hadoop/hadoop-2.9.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@master ~]# source /etc/profile
[root@master ~]# hadoop version
修改配置文件
进入home/hadoop/下的hadoop-2.9.1/etc/hadoop/文件夹中
[root@master hadoop]# cd hadoop-2.9.1/etc/hadoop
[root@master hadoop]# vim slaves
删除localhost 添加从节点的名称:
以下配置在各个文件的<configuration></configuration>
中添加
core-site.xml
[root@master hadoop]# vim core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.9.1/tmp</value>
</property>
hdfs-site.xml
[root@master hadoop]# vim hdfs-site.xml
<property>
<name>dfs.namenode.http.address</name>
<value>master:50070</value>
</property>
<!-- 设置secondarynamenode的http通讯地址 -->
<property>
<name>dfs.namenode.secondary.http.address</name>
<value>slave:50090</value>
</property>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.dir</name>
<value>/home/hadoop/hadoop-2.9.1/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop-2.9.1/tmp/dfs/data</value>
</property>
yarn-site.xml
[root@master hadoop]# vim yarn-site.xml
<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.address</name>
<value>master:8040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
mapred-site.xml
[root@Master hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@Master hadoop]# vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置hadoop-env.sh,指定JAVA_HOME
[root@master hadoop]# vim hadoop-env.sh
修改 export JAVA_HOME=/usr/java/jdk1.8.0_261
配置yarn-env.sh,指定JAVA_HOME
[root@master hadoop]# vim yarn-env.sh
修改 export JAVA_HOME=/usr/java/jdk1.8.0_261
配置mapred-env.sh,指定JAVA_HOME
[root@master hadoop]# vim mapred-env.sh
修改 export JAVA_HOME=/usr/java/jdk1.8.0_261
5. 克隆虚拟机slave
将master克隆为slave
克隆前先关闭master。
配置slave的静态IP:
重启网络:[master@master ~]$ systemctl restart network.service
[master@master ~]$ ping www.baidu.com
ping 192.168.119.136 检测master、slave是否能相互两两ping通
修改主机名称
[root@master ~]# vim /etc/hostname
[root@master ~]# vim /etc/sysconfig/network
修改后重启slave
6.SSH免密登录
[root@master ~]# ssh-keygen -t rsa
分别在slave上执行相同的操作
[root@master ~]# cd /root/.ssh
[root@master .ssh]# cat id_rsa.pub >> authorized_keys
[root@master .ssh]# chmod 644 authorized_keys
[root@master .ssh]# scp authorized_keys slave:/root/.ssh/
slave
[root@slave ~]# cd /root/.ssh
[root@slave .ssh]# cat id_rsa.pub >> authorized_keys
[root@slave .ssh]# chmod 644 authorized_keys
[root@slave .ssh]# scp authorized_keys master:/root/.ssh/
验证
登录[root@master .ssh]# ssh slave
7. 启动Hadoop集群
在master:进入到home/hadoop/hadoop-2.9.1
格式化结点:[root@master hadoop-2.9.1]# bin/hadoop namenode -format
注意:在没有出错的情况下,节点格式化一次即可
启动hadoop集群:[root@master ~]# cd home/hadoop/hadoop-2.9.1/sbin
[root@master sbin]#start-all.sh
[root@master sbin]# jps
8、验证安装可以运行hadoop自带的实例。
在浏览器中:192.168.119.135:50070
(1)执行实例程序计算pi
[root@master ~]# cd /home/hadoop/hadoop-2.9.1/share/hadoop/mapreduce
[root@master mapreduce]# hadoop jar hadoop-mapreduce-examples-2.9.1.jar pi 2 2
(2)wordcount实例(单词计数)
创建文件wordtest ,内容为hello hadoop bye hadoop。
传到hdfs上。
在hdfs上新建/input目录,将wordtest文件传到hdfs上保存。
[root@master mapreduce]# hadoop dfs -mkdir /input
[root@master mapreduce]# hadoop dfs -put wordtest /input
查看文件
[root@master mapreduce]# hadoop dfs -ls /input
运行wordcount实例。
[root@master mapreduce]# hadoop jar hadoop-mapreduce-examples-2.9.1.jar wordcount /input /output