我在安裝的過程中的參考資料:博客和《Hbase不睡覺書》
1. 服務(wù)器選擇

注意本文中的系統(tǒng)是centos 7.3, 與centos7之前的版本可能有所不同。
2. 軟件安裝版本
2.1. 安裝包下載
軟件下載地址(各自官網(wǎng)):JDK
和Hadoop目錄下的Hadoop-2.8.4選擇hadoop-2.8.4.tar.gz(編譯好不加密的包)

2.2 安裝包上傳到服務(wù)器
rz名命令上傳。如果現(xiàn)實不存在這個命令,則說明未安裝rz,執(zhí)行yum -y install lrzsz安裝后,上傳jdk和Hadoop安裝包到服務(wù)器 rz 選擇要上傳的安裝包即可。解壓tar -zxvf XXX.tar.gz
本課題中,解壓后的目錄分別為:/usr/local/jdk1.8.0_201和/usr/local/hadoop-2.8.4
3. 安裝過程詳解
3.1. 關(guān)于安裝jdk的安裝
在第二節(jié)中解壓jdk安裝包后,我的解壓目錄為/usr/local/jdk1.8.0_201,進行環(huán)境變量的設(shè)置: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映射
-
修改主機名
后續(xù)的Hadoop配置中需要用到主機名,阿里云自帶的主機名太過繁瑣,因此首先修改主機名為test01,執(zhí)行命令hostnamectl set-hostname 主機名。
[admin@iZwz9ffhe5jorfx9vdlmhmZ ~]$ hostname
iZwz9ffhe5jorfx9vdlmhmZ
[admin@iZwz9ffhe5jorfx9vdlmhmZ ~]$ hostnamectl set-hostname test01
在阿里云服務(wù)器管理界面點擊重啟或者執(zhí)行reboot命令,再次連接服務(wù)器,可以得到
Welcome to Alibaba Cloud Elastic Compute Service !
[admin@test01 ~]$
至此代表主機名更改成功
-
編輯Network文件
編輯network文件(此為Centos 7之前的修改方式,本實驗為防止后續(xù)出錯,也進行了設(shè)置)vim /etc/sysconfig/network之后將該文件中加入HOSTNAME=test01,修改之后如下所示:
NETWORKING=yes
HOSTNAME=test01
NETWORKING_IPV6=no
PEERNTP=no
-
設(shè)置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 //注意此處設(shè)置的是內(nèi)網(wǎng)ip
47.106.221.38 test1
最后一行為添加的本機IP地址(此處為阿里云顯示的公網(wǎng)IP)和修改后的HOSTNAME值
3.2.2 關(guān)閉防火墻
關(guān)閉防火墻:systemctl stop firewalld.service
3.2.3 設(shè)置免密登陸
設(shè)置免密登陸,是為了防止以后啟動hadoop時,每次啟動一個節(jié)點都需要輸入密碼。分別執(zhí)行如下命令:
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環(huán)境配置
配置profile文件
配置Hadoop系統(tǒng)變量執(zhí)行vim /etc/profile,在profile下面加入:如下環(huán)境變量
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
執(zhí)行source /etc/profile使文件修改生效
修改 hadoop-env.sh
Hadoop運行在JDK之上,原本hadoop-env.sh文件中使用的是相對路徑,但是在一些環(huán)境中會報錯,因此此處修改為絕對路徑。執(zhí)行vim hadoop-env.sh
將 export JAVA_HOME=${JAVA_HOME}更改為export JAVA_HOME=/usr/local/jdk1.8.0_201
同時,可以在此處對hadoop的內(nèi)存環(huán)境進行配置,在<configuration></configuration>之間添加以下內(nèi)容::
export HADOOP_NAMENODE_OPTS=" -Xms1024m -Xmx2014m -XX:+UseParallelGC"
export HADOOP_DATANODE_OPTS=" -Xms1024m -Xmx2014m"
export HADOOP_LOG_DIR=/data/logs/hadoop //記得在命令行建立這個文件夾
修改 core-site.xml
執(zhí)行vim core-site.xml,修改core-site.xml文件,在<configuration></configuration>之間添加以下內(nèi)容:
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://test01:8020</value>
</property>
修改hdfs-site.xml文件
執(zhí)行vim hdfs-site.xml,修改hdfs配置,在<configuration></configuration>之間添加以下內(nèi)容:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///root/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.dataenode.data.dir</name>
<value>file:///root/hadoop/dfs/data</value>
</property>
注意此處需要在命令行中新建相應(yīng)的文件夾,分別執(zhí)行mkdir /root/hadoop/dfs/name和mkdir /root/hadoop/dfs/data
修改mapred-site.xml文件
如果沒有 mapred-site.xml 該文件,就復(fù)制mapred-site.xml.template文件并重命名為mapred-site.xml,所用命令:cp mapred-site.xml.template mapred-site.xml,膚質(zhì)成功后,編輯mapred-site.xml文件,加入以下內(nèi)容
<property>
<name>mapred.job.tracker</name>
<value>test01:8021</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
注意此處需要在命令行中新建相應(yīng)的文件夾,執(zhí)行mkdir /root/hadoop/var
4.安裝成功標(biāo)志
4.1 初始化
第一次啟動hadoop需要進行初始化,執(zhí)行hadoop namenode -format得到以下結(jié)果


初始化成功后,可以在/root/hadoop/dfs/name 目錄下(該路徑在hdfs-site.xml文件中進行了相應(yīng)配置,并新建了該文件夾)新增了一個current 目錄以及一些文件。 如下圖所示:

4.2 hadoop 啟動
Hadoop 主要是啟動HDFS和YARN
4.2.1 啟動HDFS
進入hadoop安裝目錄下的sbin目錄 啟動HDFS ,執(zhí)行:start-dfs.sh。得到以下結(jié)果,則HDFS啟動成功。

4.2.1 啟動YARN
進入hadoop安裝目錄下的sbin目錄啟動YARN,執(zhí)行start-yarn.sh
得到以下結(jié)果,則YARN啟動成功。

此時查看當(dāng)前所執(zhí)行的進程,執(zhí)行jps,得到以下結(jié)果,說明安裝成功

常見錯誤
-
jdk版本造成的錯誤
Centos 7及以上的版本中可以選擇yum直接安裝openjdk,我第一次使用的是openjdk版本,openjdk在后續(xù)的hadoop安裝過程中會遇到各種問題,包括:
- openjdk與jdk的目錄結(jié)構(gòu)差異造成的問題
/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,可能導(dǎo)致某些命令不存在
JPS命令不存在
java-1.7.0-openjdkcontains only the JRE.jpsis 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文件中關(guān)于dfs.namenode.name.dir 和dfs.datanode.data.dir值的設(shè)置有誤,檢查目錄是否存在等