目录
安装hadoop新版本遇到好几个坑,查阅的资料有的说明不是很准确,所以记录下这次的安装过程,希望可以帮助大家节约时间。
谨记一点:遇到问题首先看日志
一.安装jdk1.8
此处省略过程,请自行查询
比如java安装目录:/opt/jdk/openjdk-1.8.0_92
二.hadoop集群搭建
1.准备事项
资源需求4C8G3台,节点分配为1主2从,即
主:hadoop1
从:hadoop2,hadoop3
比如IP列表为:
192.168.11.11
192.168.11.12
192.168.11.13
linux系统:CentOS 7.3
最好使用root权限,因为需要设置免密码登录
2.修改系统主机名及hosts
命令:sudo hostnamectl set-hostname <newhostname>
实际主从分别执行:
sudo hostnamectl set-hostname hadoop1
sudo hostnamectl set-hostname hadoop2
sudo hostnamectl set-hostname hadoop3
修改hosts,vim /etc/hosts,每台都添加如下内容,
192.168.11.11 hadoop1
192.168.11.12 hadoop2
192.168.11.13 hadoop3
3.下载安装包并解压
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.4/hadoop-3.1.4.tar.gz
比如安装目录为:/opt/hadoop/hadoop-3.1.4
添加hadoop环境变量,vim /etc/profile
添加如下配置,
export HADOOP_HOME=/opt/hadoop/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使生效,source /etc/profile
4.修改配置文件
以下修改,主从节点均保持一致
首先创建几个目录,如下
/opt/hadoop/hadoop-3.1.4/data
/opt/hadoop/hadoop-3.1.4/hdfs/name
/opt/hadoop/hadoop-3.1.4/hdfs/data
1)/opt/hadoop/hadoop-3.1.4/etc/hadoop/core-site.xml
添加如下配置,
<configuration>
<!--定义namenode地址 默认9000-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9003</value>
</property>
<!--修改用于hadoop存储数据的默认位置-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop-3.1.4/data</value>
</property>
</configuration>
2)/opt/hadoop/hadoop-3.1.4/etc/hadoop/hdfs-site.xml
添加如下配置,
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/hadoop-3.1.4/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/hadoop-3.1.4/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3)/opt/hadoop/hadoop-3.1.4/etc/hadoop/mapred-site.xml
添加配置如下,
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4)/opt/hadoop/hadoop-3.1.4/etc/hadoop/yarn-site.xml
添加如下配置,
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 设置ResourceManager 域名 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- 开启yarn.webapp.ui2 -->
<property>
<description>To enable RM web ui2 application.</description>
<name>yarn.webapp.ui2.enable</name>
<value>true</value>
</property>
<!-- 默认为true, 当虚拟机内存不够多时,容易超出虚拟机内存 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers.</description>
</property>
</configuration>
5)/opt/hadoop/hadoop-3.1.4/etc/hadoop/hadoop-env.sh
添加如下配置,
JAVA_HOME=/opt/jdk/openjdk-1.8.0_92
HADOOP_SHELL_EXECNAME=root
6)修改/opt/hadoop/hadoop-3.1.4/etc/hadoop/workers
内容全部替换为如下,
hadoop2
hadoop3
7)修改/opt/hadoop/hadoop-3.1.4/bin/hdfs
把HADOOP_SHELL_EXECNAME="hdfs"修改为HADOOP_SHELL_EXECNAME="root"即可
8)为防止启动失败,需修改start-dfs.sh、start-yarn.sh、stop-dfs.sh、stop-yarn.sh,
修改start-dfs.sh、stop-dfs.sh,在文件头添加如下设置,
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
修改start-yarn.sh、stop-yarn.sh,在文件头添加如下设置,
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
5.配置免密登录
因为需要从主节点启动集群,所以需要实现主到从的免密登录,设置如下
每个节点分别执行如下命令,其中id_rsa是秘钥,id_rsa.pub是公钥文件
ssh-keygen -t rsa
cd ~/.ssh
将密钥追加到文件authorized_keys中:cat id_rsa.pub >> authorized_keys
至此,每台机器均实现对本级的免密钥登录,如果要实现主到从的免密钥,
需将主节点的~/.ssh/id_rsa.pub中的公钥追加到从接地那的~/.ssh/authorized_keys中,
执行:
scp id_rsa.pub 用户名@主机名或ip地址:目录(随机目录)
比如:scp id_rsa.pub root@hadoop2:/opt,
在其他从节点执行追加到文件authorized_keys命令:
接着上面,如下
cd /opt
cat id_rsa.pub >> /root/.ssh/authorized_keys
修改所有节点的/etc/ssh/sshd_config 文件,以下配置均需打开
#这两项为打开公钥模式
RSAAuthentication yes
PubkeyAuthentication yes
#配置公钥记录文件
AuthorizedKeysFile .ssh/authorized_keys
#打开密码验证模式
PasswordAuthentication yes
6.启动集群
启动前,必须执行如下格式化命令,不然namenode无法启动,则无法访问hdfs
主从节点hadoop根目录执行如下格式化命令:hadoop namenode -format
启动hdfs集群:
start-dfs.sh #启动hdfs集群
stop-dfs.sh #停止hdfs集群
启动yarn集群:
start-yarn.sh #启动yarn集群
stop-yarn.sh #停止yarn集群
一次性启动hdfs、yarn集群:
start-all.sh
stop-all.sh
7.访问:
yarn:http://hadoop1:8088
hdfs:http://hadoop1:9870