Hadoop Apache 2.7.2 安裝教程

本文介紹Hadoop Apache2.7.2的安裝說明,爲前序文章[大數據]數據倉庫的搭建的輔助文檔

1.JDK安裝

  hadoop的功能運行需要的JDK版本在1.7以上。所以先要查詢JDK的版本是否在1.7以上。
1.查詢方法:

rpm -ga | grep java

2.若不是,卸載,並安裝jdk1.7以上版本

sudu rpm -e 軟件包

如何對當前用戶獲取root權限。

jdk-8u144-linux-x64.tar安裝包
鏈接:https://pan.baidu.com/s/10-Vxjw3PgJrgOcXd4b14oA
提取碼:kqk6

3.進入到JDK的軟件包目錄,解壓JDK,

筆者這裏在/opt目錄下創建了一個module目錄,專門放各種軟件

tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

4.配置JDK的環境變量
(1)獲取JDK的路徑:

pwd

/opt/module/jdk1.8.0_144

(2)打開/etc/profile.d/env.sh.

sudo vim /etc/profile.d/env.sh

在env.sh中添加JDK路徑

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=PATH:PATH:JAVA_HOME/bin

注:很多人這裏配置的環境變量目錄是/etc/profile的文件。兩者的區別是/etc/profile.d目錄下的文件在之後集羣ssh到其他節點後會直接加載。避免了之後ssh到其他節點要重新刷新配置文件
(3) 刷新配置文件

source /etc/profile

(4)測試JDK是否安裝成功

java -version

2.安裝Hadoop

Hadoop下載地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
1.將hadoop-2.7.2.tar.gz導入到linux
2.解壓hadoop-2.7.2.tar.gz

tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

3.配置hadoop的環境變量
(1)獲取hadoop的安裝路徑

pwd

/opt/module/hadoop-2.7.2

(2)打開/etc/profile.d/env.sh文件

sudo vim /etc/profile.d/env.sh

(3)在文件末尾加上Hadoop路徑

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=PATH:PATH:HADOOP_HOME/bin
export PATH=PATH:PATH:HADOOP_HOME/sbin

(4)刷新配置文件讓文件生效

source /etc/profile

(5)測試Hadoop是否安裝成功

hadoop version

3.完全分佈式環境配置

安裝前確認:

  1. 確定客戶機的臺數(關閉防火牆,靜態ip,主機名),筆者爲了測試簡便,使用3臺客戶機,分別爲hadoop111,hadoop112,hadoop113
  2. 安裝JDK。參照上面
  3. 配置環境變量。參照上面
  4. 安裝Hadoop。參照上面
  5. 配置集羣
  6. 設置單點啓動
  7. 配置ssh
  8. 羣起測試集羣

(1)編寫集羣分發腳本
  ①在家目錄下創建bin目錄,並在bin目錄下創建分發腳本xsync

[ziyang@hadoop111 ~]$ mkdir bin
[ziyang@hadoop111 ~]$ cd bin/
[ziyang@hadoop111 bin]$ vi xsync

  ②在腳本文件中編寫分發代碼

#!/bin/bash
#1 獲取輸入參數個數,如果沒有參數,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 獲取文件名稱
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 獲取上級目錄到絕對路徑
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 獲取當前用戶名稱
user=`whoami`

#5 循環
for host in hadoop111 hadoop112 hadoop113
do
    echo ------------------- $host --------------
    rsync -av $pdir/$fname $user@$host:$pdir
done

  ③修改權限

[ziyang@hadoop111 bin]$ chmod 777 xsync

  ④測試腳本

[ziyang@hadoop111 bin]$ xsync xsync

(2)配置SSH無祕鑰登錄
簡單敘述:進入家目錄的.ssh目錄
①生成公鑰和私鑰:

[ziyang@hadoop111 .ssh]$ ssh-keygen -t rsa

然後敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

②將公鑰拷貝到要免密登錄的目標機器上
[ziyang@hadoop111 .ssh]$ ssh-copy-id hadoop111
[ziyang@hadoop111 .ssh]$ ssh-copy-id hadoop112
[ziyang@hadoop111 .ssh]$ ssh-copy-id hadoop113

注意:
還需要在hadoop112上採用atguigu賬號配置一下無密登錄到hadoop111、hadoop112、hadoop113服務器上。
hadoop113同理

(3)集羣規劃
①在搭集羣前,首先要對集羣有一個詳細的規劃。
注意:NameNode和SecondaryNameNode還有ResourceManager不要安裝在同一臺服務器
所以對於3臺機器的集羣規劃

hadoop111 hadoop112 hadoop113
HDFS NameNode、DateNode DateNode SecondaryNameNode、DateNode
YARN NodeManager ResourceManager、NodeManager NodeManager

②核心文件配置
核心文件的配置一共有
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml

hadoop-env.sh
yarn-env.sh
mapred-env.sh

slaves
1)進入hadoop的配置目錄

[ziyang@hadoop111 ~]$ cd /opt/module/hadoop-2.7.2/etc/hadoop/

2)配置核心配置文件core-site.xml
在該文件中編寫如下配置

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
		<name>fs.defaultFS</name>
      <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop運行時產生文件的存儲目錄 -->
<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
</configuration>

3)配置HDFS配置文件hdfs-site.xml與hadoop-env.sh
3.1配置hdfs-site.xml
在該文件中編寫如下配置

<configuration>
<property>
		<name>dfs.replication</name>
		<value>3</value>
</property>

<!-- 指定Hadoop輔助名稱節點主機配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop113:50090</value>
</property>
</configuration>

3.2配置hadoop-env.sh

仔細找,在如下的信息下面
# The java implementation to use.
在下一行去掉註釋,加上JDK的路徑

export JAVA_HOME=/opt/module/jdk1.8.0_144

4)配置Yarn配置文件yarn-site.xml與yarn-env.sh
4.1配置yarn-site.xml文件
在該文件中編寫如下配置

<configuration>
<!-- Reducer獲取數據的方式 -->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop112</value>
</property>

<!-- 日誌聚集功能使能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<!-- 日誌保留時間設置7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
</configuration>

4.2配置yarn-env.sh文件

仔細找,在如下信息下面
# some Java parameters
在下一行去掉註釋,加上JDK路徑

export JAVA_HOME=/opt/module/jdk1.8.0_144

5)配置MapReduce配置文件中mapred-site.xml與mapred-env.sh
5.1配置mapred-site.xml

將mapred-site.xml的後綴名去掉
mv mapred-site.xml.template mapred-site.xml

<configuration>
<!-- 指定MR運行在Yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

<!-- 歷史服務器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 歷史服務器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
</configuration>

5.2配置mapred-env.sh

還是一樣配置JDK路徑
export JAVA_HOME=/opt/module/jdk1.8.0_144

6)配置salaves
在文件中加入客戶端的名字

hadoop111
hadoop112
hadoop113

注意:該文件中添加的內容結尾不允許有空格,文件中不允許有空行。

(4) 分別在hadoop112、hadoop113的/opt目錄下創建module文件夾,並修改所有者和所有者組爲你的用戶名

[ziyang@hadoop112 opt]$ sudo mkdir module
[ziyang@hadoop112 opt]$ sudo chown atguigu:atguigu module/
[ziyang@hadoop113 opt]$ sudo mkdir module
[ziyang@hadoop113 opt]$ sudo chown atguigu:atguigu module/

分發JDK文件與Hadoop文件

xsync /opt/module/hadoop-2.7.2/
xsync jdk1.8.0_144/

在其他的客戶端集羣配置好配置文件
(5)羣啓集羣
1)如果集羣是第一次啓動,需要格式化NameNode(注意格式化之前,一定要先停止上次啓動的所有namenode和datanode進程,然後再刪除data和log數據)

[ziyang@hadoop111 hadoop-2.7.2]$ bin/hdfs namenode -format

2)啓動HDFS

[ziyang@hadoop111 hadoop-2.7.2]$ sbin/start-dsf.sh

3)啓動Yarn

因爲yarn配置在hadoop112所以要去hadoop112啓動

[ziyang@hadoop112 hadoop-2.7.2]$ sbin/start-yarn.sh

4.支持LZO壓縮配置

(1)hadoop本身並不支持lzo壓縮,故需要使用twitter提供的hadoop-lzo開源組件。hadoop-lzo需依賴hadoop和lzo進行編譯。
以下是編譯好的Lzo壓縮文件

鏈接:https://pan.baidu.com/s/1b46cClcMlruI3FYViM_eVw
提取碼:nkzh

(2)直接將編譯好的jar包放入hadoop-2.7.2/share/hadoop/common/
並同步到hadoop112,hadoop113

[ziyang@hadoop112 common]$ xsync hadoop-lzo-0.4.20.jar

(3)在core-site.xml中增加支持LZO壓縮

<configuration>
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>

<property>
    <name>io.compression.codec.lzo.class</name>
    <value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>

同步到hadoop112,hadoop113

[ziyang@hadoop112 hadoop]$ xsync core-site.xml

(4)啓動集羣

LZO壓縮文件可切片性的特性依賴於啓索引,所以,在分析LZO文件的時候我們都要手動爲其創建索引

[ziyang@hadoop112 module]$ hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar  com.hadoop.compression.lzo.DistributedLzoIndexer 文件在HDFS上的路徑

5.HDFS擴容配置

有需要留言更新

6.HDFS基準測試

此內容用於測試HDFS的讀寫性能,PC端請量力而行可以跳過
(1)測試HDFS寫的性能
 測試內容:向HDFS集羣寫100個128M的文件

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -write -nrFiles 100 -fileSize 128MB

(2)測試HDFS讀的性能
emsp;測試內容:向HDFS集羣讀100個128M的文件

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -read -nrFiles 100 -fileSize 128MB

(3)刪除測試生成數據

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar TestDFSIO -clean

7.Hadoop參數調優

有需要留言更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章