我在安装的过程中的参考资料:博客和《Hbase不睡觉书》
1. 服务器选择
注意本文中的系统是centos 7.3, 与centos7之前的版本可能有所不同。
2. 软件安装版本
2.1. 安装包下载
软件下载地址(各自官网):JDK
和Hadoop目录下的Hadoop-2.8.4选择hadoop-2.8.4.tar.gz(编译好不加密的包)
2.2 安装包上传到服务器
rz名命令上传。如果现实不存在这个命令,则说明未安装rz,执行yum -y install lrzsz
安装后,上传jdk和Hadoop安装包到服务器 rz 选择要上传的安装包即可。解压tar -zxvf XXX.tar.gz
本课题中,解压后的目录分别为:/usr/local/jdk1.8.0_201
和/usr/local/hadoop-2.8.4
3. 安装过程详解
3.1. 关于安装jdk的安装
在第二节中解压jdk安装包后,我的解压目录为/usr/local/jdk1.8.0_201
,进行环境变量的设置:vim /etc/profile
在profile文件底部加入:
export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
检测安装效果:输入java -version显示如下即可:
[root@test01 ~]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
3.2 安装Hadoop
3.2.1. 修改主机名与IP映射
- 修改主机名
后续的Hadoop配置中需要用到主机名,阿里云自带的主机名太过繁琐,因此首先修改主机名为test01,执行命令hostnamectl set-hostname 主机名
。
[admin@iZwz9ffhe5jorfx9vdlmhmZ ~]$ hostname
iZwz9ffhe5jorfx9vdlmhmZ
[admin@iZwz9ffhe5jorfx9vdlmhmZ ~]$ hostnamectl set-hostname test01
在阿里云服务器管理界面点击重启或者执行reboot命令,再次连接服务器,可以得到
Welcome to Alibaba Cloud Elastic Compute Service !
[admin@test01 ~]$
至此代表主机名更改成功
- 编辑Network文件
编辑network文件(此为Centos 7之前的修改方式,本实验为防止后续出错,也进行了设置)vim /etc/sysconfig/network
之后将该文件中加入HOSTNAME=test01
,修改之后如下所示:
NETWORKING=yes
HOSTNAME=test01
NETWORKING_IPV6=no
PEERNTP=no
- 设置IP映射
输入vim /etc/hosts
添加本机的IP映射,修改之后文件如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.17.15.27 test01 //注意此处设置的是内网ip
47.106.221.38 test1
最后一行为添加的本机IP地址(此处为阿里云显示的公网IP)和修改后的HOSTNAME值
3.2.2 关闭防火墙
关闭防火墙:systemctl stop firewalld.service
3.2.3 设置免密登陆
设置免密登陆,是为了防止以后启动hadoop时,每次启动一个节点都需要输入密码。分别执行如下命令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
3.2.4 Hadoop环境配置
配置profile文件
配置Hadoop系统变量执行vim /etc/profile
,在profile下面加入:如下环境变量
export HADOOP_HOME=/usr/local/hadoop-2.8.4
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
执行source /etc/profile
使文件修改生效
修改 hadoop-env.sh
Hadoop运行在JDK之上,原本hadoop-env.sh文件中使用的是相对路径,但是在一些环境中会报错,因此此处修改为绝对路径。执行vim hadoop-env.sh
将 export JAVA_HOME=${JAVA_HOME}
更改为export JAVA_HOME=/usr/local/jdk1.8.0_201
同时,可以在此处对hadoop的内存环境进行配置,在
之间添加以下内容::
export HADOOP_NAMENODE_OPTS=" -Xms1024m -Xmx2014m -XX:+UseParallelGC"
export HADOOP_DATANODE_OPTS=" -Xms1024m -Xmx2014m"
export HADOOP_LOG_DIR=/data/logs/hadoop //记得在命令行建立这个文件夹
修改 core-site.xml
执行vim core-site.xml
,修改core-site.xml文件,在
之间添加以下内容:
hadoop.tmp.dir
/root/hadoop/tmp
Abase for other temporary directories.
fs.default.name
hdfs://test01:8020
修改hdfs-site.xml文件
执行vim hdfs-site.xml
,修改hdfs配置,在
之间添加以下内容:
dfs.replication
1
dfs.namenode.name.dir
file:///root/hadoop/dfs/name
dfs.dataenode.data.dir
file:///root/hadoop/dfs/data
注意此处需要在命令行中新建相应的文件夹,分别执行mkdir /root/hadoop/dfs/name
和mkdir /root/hadoop/dfs/data
修改mapred-site.xml文件
如果没有 mapred-site.xml 该文件,就复制mapred-site.xml.template文件并重命名为mapred-site.xml,所用命令:cp mapred-site.xml.template mapred-site.xml
,肤质成功后,编辑mapred-site.xml文件,加入以下内容
mapred.job.tracker
test01:8021
mapred.local.dir
/root/hadoop/var
mapreduce.framework.name
yarn
注意此处需要在命令行中新建相应的文件夹,执行mkdir /root/hadoop/var
4.安装成功标志
4.1 初始化
第一次启动hadoop需要进行初始化,执行hadoop namenode -format
得到以下结果
初始化成功后,可以在/root/hadoop/dfs/name 目录下(该路径在hdfs-site.xml文件中进行了相应配置,并新建了该文件夹)新增了一个current 目录以及一些文件。 如下图所示:
4.2 hadoop 启动
Hadoop 主要是启动HDFS和YARN
4.2.1 启动HDFS
进入hadoop安装目录下的sbin目录 启动HDFS ,执行:start-dfs.sh
。得到以下结果,则HDFS启动成功。
4.2.1 启动YARN
进入hadoop安装目录下的sbin目录启动YARN,执行start-yarn.sh
得到以下结果,则YARN启动成功。
此时查看当前所执行的进程,执行jps
,得到以下结果,说明安装成功
常见错误
- jdk版本造成的错误
Centos 7及以上的版本中可以选择yum直接安装openjdk,我第一次使用的是openjdk版本,openjdk在后续的hadoop安装过程中会遇到各种问题,包括:
- openjdk与jdk的目录结构差异造成的问题
/root/hadoop/bin/hdfs: line 204: /opt/jdk/bin/java: No such file or directory /root/hadoop/bin/hdfs:
注意JAVA_HOME的值必须具体到二进制java命令所在bin目录的上一级例如/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.201-2.6.16.1.el7_6.x86_64/jre
而不是仅仅包括jdk版本的/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.201-2.6.16.1.el7_6.x86_64
- openjdk是精简版的jdk,可能导致某些命令不存在
JPS命令不存在
java-1.7.0-openjdk
contains only the JRE.jps
is part of the openjdk development package. Refer here.
解决方案:安装缺少的包yum install java-1.7.0-openjdk-devel
- Hadoop配置造成的问题
FATAL namenode.NameNode: Failed to start namenode. java.lang. IllegalArgumentException: URI has an authority component
问题在于 /hadoop/etc/hadoop/hdfs-site.xml文件中关于dfs.namenode.name.dir 和dfs.datanode.data.dir值的设置有误,检查目录是否存在等