1. 程式人生 > >GitChat·大資料 | 史上最詳細的Hadoop環境搭建

GitChat·大資料 | 史上最詳細的Hadoop環境搭建

GitChat 作者:鳴宇淳
原文: 史上最詳細的Hadoop環境搭建
關注公眾號:GitChat 技術雜談,一本正經的講技術
【不要錯過文末彩蛋】

前言

Hadoop在大資料技術體系中的地位至關重要,Hadoop是大資料技術的基礎,對Hadoop基礎知識的掌握的紮實程度,會決定在大資料技術道路上走多遠。

這是一篇入門文章,Hadoop的學習方法很多,網上也有很多學習路線圖。本文的思路是:以安裝部署Apache Hadoop2.x版本為主線,來介紹Hadoop2.x的架構組成、各模組協同工作原理、技術細節。安裝不是目的,通過安裝認識Hadoop才是目的。

本文分為五個部分、十三節、四十九步。

第一部分:Linux環境安裝

Hadoop是執行在Linux,雖然藉助工具也可以執行在Windows上,但是建議還是執行在Linux系統上,第一部分介紹Linux環境的安裝、配置、Java JDK安裝等。

第二部分:Hadoop本地模式安裝

Hadoop本地模式只是用於本地開發除錯,或者快速安裝體驗Hadoop,這部分做簡單的介紹。

第三部分:Hadoop偽分散式模式安裝

學習Hadoop一般是在偽分散式模式下進行。這種模式是在一臺機器上各個程序上執行Hadoop的各個模組,偽分散式的意思是雖然各個模組是在各個程序上分開執行的,但是隻是執行在一個作業系統上的,並不是真正的分散式。

第四部分:完全分散式安裝

完全分散式模式才是生產環境採用的模式,Hadoop執行在伺服器叢集上,生產環境一般都會做HA,以實現高可用。

第五部分:Hadoop HA安裝

HA是指高可用,為了解決Hadoop單點故障問題,生產環境一般都做HA部署。這部分介紹瞭如何配置Hadoop2.x的高可用,並簡單介紹了HA的工作原理。
安裝過程中,會穿插簡單介紹涉及到的知識。希望能對大家有所幫助。

第一部分:Linux環境安裝

第一步、配置Vmware NAT網路

一、Vmware網路模式介紹

二、NAT模式配置

NAT是網路地址轉換,是在宿主機和虛擬機器之間增加一個地址轉換服務,負責外部和虛擬機器之間的通訊轉接和IP轉換。

我們部署Hadoop叢集,這裡選擇NAT模式,各個虛擬機器通過NAT使用宿主機的IP來訪問外網。

我們的要求是叢集中的各個虛擬機器有固定的IP、可以訪問外網,所以進行如下設定:

1、 Vmware安裝後,預設的NAT設定如下:

enter image description here

2、 預設的設定是啟動DHCP服務的,NAT會自動給虛擬機器分配IP,但是我們需要將各個機器的IP固定下來,所以要取消這個預設設定。

3、 為機器設定一個子網網段,預設是192.168.136網段,我們這裡設定為100網段,將來各個虛擬機器Ip就為 192.168.100.*。

4、 點選NAT設定按鈕,開啟對話方塊,可以修改閘道器地址和DNS地址。這裡我們為NAT指定DNS地址。

enter image description here

5、 閘道器地址為當前網段裡的.2地址,好像是固定的,我們不做修改,先記住閘道器地址就好了,後面會用到。

第二步、安裝Linux作業系統

三、Vmware上安裝Linux系統

1、 檔案選單選擇新建虛擬機器

2、 選擇經典型別安裝,下一步。

3、 選擇稍後安裝作業系統,下一步。

4、 選擇Linux系統,版本選擇CentOS 64位。

enter image description here

5、 命名虛擬機器,給虛擬機器起個名字,將來顯示在Vmware左側。並選擇Linux系統儲存在宿主機的哪個目錄下,應該一個虛擬機器儲存在一個目錄下,不能多個虛擬機器使用一個目錄。

enter image description here

6、 指定磁碟容量,是指定分給Linux虛擬機器多大的硬碟,預設20G就可以,下一步。

7、 點選自定義硬體,可以檢視、修改虛擬機器的硬體配置,這裡我們不做修改。

8、 點選完成後,就建立了一個虛擬機器,但是此時的虛擬機器還是一個空殼,沒有作業系統,接下來安裝作業系統。

9、 點選編輯虛擬機器設定,找到DVD,指定作業系統ISO檔案所在位置。

enter image description here

10、 點選開啟此虛擬機器,選擇第一個回車開始安裝作業系統。

enter image description here

11、 設定root密碼。

enter image description here

12、 選擇Desktop,這樣就會裝一個Xwindow。

enter image description here

13、 先不新增普通使用者,其他用預設的,就把Linux安裝完畢了。

四、設定網路

因為Vmware的NAT設定中關閉了DHCP自動分配IP功能,所以Linux還沒有IP,需要我們設定網路各個引數。

1、 用root進入Xwindow,右擊右上角的網路連線圖示,選擇修改連線。

enter image description here

2、 網路連線裡列出了當前Linux裡所有的網絡卡,這裡只有一個網絡卡System eth0,點選編輯。

enter image description here

3、 配置IP、子網掩碼、閘道器(和NAT設定的一樣)、DNS等引數,因為NAT裡設定網段為100.*,所以這臺機器可以設定為192.168.100.10閘道器和NAT一致,為192.168.100.2

enter image description here

4、 用ping來檢查是否可以連線外網,如下圖,已經連線成功。

enter image description here

五、修改Hostname

1、 臨時修改hostname

[root@localhost Desktop]# hostname bigdata-senior01.chybinmy.com

這種修改方式,系統重啟後就會失效。

2、 永久修改hostname

想永久修改,應該修改配置檔案 /etc/sysconfig/network。

命令:[root@bigdata-senior01 ~] vim /etc/sysconfig/network

開啟檔案後,

NETWORKING=yes  #使用網路
HOSTNAME=bigdata-senior01.chybinmy.com  #設定主機名

六、配置Host

命令:[root@bigdata-senior01 ~] vim /etc/hosts
新增hosts: 192.168.100.10 bigdata-senior01.chybinmy.com

七、關閉防火牆

學習環境可以直接把防火牆關閉掉。

(1) 用root使用者登入後,執行檢視防火牆狀態。

[root@bigdata-senior01 hadoop]# service iptables status

(2) 用[[email protected] hadoop]# service iptables stop關閉防火牆,這個是臨時關閉防火牆。

[root@bigdata-senior01 hadoop-2.5.0]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]

(3) 如果要永久關閉防火牆用。

[root@bigdata-senior01 hadoop]# chkconfig iptables off

關閉,這種需要重啟才能生效。

八、關閉selinux

selinux是Linux一個子安全機制,學習環境可以將它禁用。

[hadoop@bigdata-senior01 hadoop-2.5.0]$ vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

enter image description here

第三步、安裝JDK

九、安裝Java JDK

1、 檢視是否已經安裝了java JDK。

[root@bigdata-senior01 Desktop]# java –version

注意:Hadoop機器上的JDK,最好是Oracle的Java JDK,不然會有一些問題,比如可能沒有JPS命令。
如果安裝了其他版本的JDK,解除安裝掉。

2、 安裝java JDK

(1) 去下載Oracle版本Java JDK:jdk-7u67-linux-x64.tar.gz

(2) 將jdk-7u67-linux-x64.tar.gz解壓到/opt/modules目錄下

[root@bigdata-senior01 /]# tar -zxvf jdk-7u67-linux-x64.tar.gz -C /opt/modules

(3) 新增環境變數

設定JDK的環境變數 JAVA_HOME。需要修改配置檔案/etc/profile,追加

export JAVA_HOME="/opt/modules/jdk1.7.0_67"
export PATH=$JAVA_HOME/bin:$PATH

修改完畢後,執行 source /etc/profile

(4)安裝後再次執行 java –version,可以看見已經安裝完成。

[root@bigdata-senior01 /]# java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

第二部分:Hadoop本地模式安裝

第四步、Hadoop部署模式

Hadoop部署模式有:本地模式、偽分佈模式、完全分散式模式、HA完全分散式模式。

區分的依據是NameNode、DataNode、ResourceManager、NodeManager等模組執行在幾個JVM程序、幾個機器。

模式名稱 各個模組佔用的JVM程序數 各個模組執行在幾個機器數上
本地模式 1個 1個
偽分散式模式 N個 1個
完全分散式模式 N個 N個
HA完全分散式 N個 N個

第五步、本地模式部署

十、本地模式介紹

本地模式是最簡單的模式,所有模組都執行與一個JVM程序中,使用的本地檔案系統,而不是HDFS,本地模式主要是用於本地開發過程中的執行除錯用。下載hadoop安裝包後不用任何設定,預設的就是本地模式。

十一、解壓hadoop後就是直接可以使用

1、 建立一個存放本地模式hadoop的目錄

[hadoop@bigdata-senior01 modules]$ mkdir /opt/modules/hadoopstandalone

2、 解壓hadoop檔案

[hadoop@bigdata-senior01 modules]$ tar -zxf /opt/sofeware/hadoop-2.5.0.tar.gz  -C /opt/modules/hadoopstandalone/

3、 確保JAVA_HOME環境變數已經配置好

[hadoop@bigdata-senior01 modules]$ echo ${JAVA_HOME}
/opt/modules/jdk1.7.0_67

十二、執行MapReduce程式,驗證

我們這裡用hadoop自帶的wordcount例子來在本地模式下測試跑mapreduce。

1、 準備mapreduce輸入檔案wc.input

[hadoop@bigdata-senior01 modules]$ cat /opt/data/wc.input
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop

2、 執行hadoop自帶的mapreduce Demo

[hadoop@bigdata-senior01 hadoopstandalone]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /opt/data/wc.input output2

enter image description here

這裡可以看到job ID中有local字樣,說明是執行在本地模式下的。

3、 檢視輸出檔案

本地模式下,mapreduce的輸出是輸出到本地。

[hadoop@bigdata-senior01 hadoopstandalone]$ ll output2
total 4
-rw-r--r-- 1 hadoop hadoop 60 Jul  7 12:50 part-r-00000
-rw-r--r-- 1 hadoop hadoop  0 Jul  7 12:50 _SUCCESS

輸出目錄中有_SUCCESS檔案說明JOB執行成功,part-r-00000是輸出結果檔案。

第三部分:Hadoop偽分散式模式安裝

第六步、偽分散式Hadoop部署過程

十三、Hadoop所用的使用者設定

1、 建立一個名字為hadoop的普通使用者

[root@bigdata-senior01 ~]# useradd hadoop
[root@bigdata-senior01 ~]# passwd hadoop

2、 給hadoop使用者sudo許可權

[root@bigdata-senior01 ~]# vim /etc/sudoers

設定許可權,學習環境可以將hadoop使用者的許可權設定的大一些,但是生產環境一定要注意普通使用者的許可權限制。

root    ALL=(ALL)       ALL
hadoop ALL=(root) NOPASSWD:ALL

注意:如果root使用者無權修改sudoers檔案,先手動為root使用者新增寫許可權。

[root@bigdata-senior01 ~]# chmod u+w /etc/sudoers

3、 切換到hadoop使用者

[root@bigdata-senior01 ~]# su - hadoop
[hadoop@bigdata-senior01 ~]$

4、 建立存放hadoop檔案的目錄

[hadoop@bigdata-senior01 ~]$ sudo mkdir /opt/modules

5、 將hadoop資料夾的所有者指定為hadoop使用者

如果存放hadoop的目錄的所有者不是hadoop,之後hadoop執行中可能會有許可權問題,那麼就講所有者改為hadoop。

[hadoop@bigdata-senior01 ~]# sudo chown -R hadoop:hadoop /opt/modules

十四、解壓Hadoop目錄檔案

1、 複製hadoop-2.5.0.tar.gz到/opt/modules目錄下。

2、 解壓hadoop-2.5.0.tar.gz

[hadoop@bigdata-senior01 ~]# cd /opt/modules
[hadoop@bigdata-senior01 hadoop]# tar -zxvf hadoop-2.5.0.tar.gz

十五、配置Hadoop

1、 配置Hadoop環境變數

[hadoop@bigdata-senior01 hadoop]# vim /etc/profile

追加配置:

export HADOOP_HOME="/opt/modules/hadoop-2.5.0"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

執行:source /etc/profile 使得配置生效

驗證HADOOP_HOME引數:

[hadoop@bigdata-senior01 /]$ echo $HADOOP_HOME
/opt/modules/hadoop-2.5.0

2、 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh檔案的JAVA_HOME引數

[hadoop@bigdata-senior01 ~]$ sudo vim  ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
修改JAVA_HOME引數為:
export JAVA_HOME="/opt/modules/jdk1.7.0_67"

3、 配置core-site.xml

enter image description here

[[email protected] ~]sudovim{HADOOP_HOME}/etc/hadoop/core-site.xml

(1) fs.defaultFS引數配置的是HDFS的地址。

<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-senior01.chybinmy.com:8020</value>
</property>

(2) hadoop.tmp.dir配置的是Hadoop臨時目錄,比如HDFS的NameNode資料預設都存放這個目錄下,檢視*-default.xml等預設配置檔案,就可以看到很多依賴${hadoop.tmp.dir}的配置。

預設的hadoop.tmp.dir/tmp/hadoop-${user.name},此時有個問題就是NameNode會將HDFS的元資料儲存在這個/tmp目錄下,如果作業系統重啟了,系統會清空/tmp目錄下的東西,導致NameNode元資料丟失,是個非常嚴重的問題,所有我們應該修改這個路徑。

  • 建立臨時目錄:
    [hadoop@bigdata-senior01 hadoop-2.5.0]$ sudo mkdir -p /opt/data/tmp
  • 將臨時目錄的所有者修改為hadoop
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sudo chown –R hadoop:hadoop /opt/data/tmp
  • 修改hadoop.tmp.dir
 <property>
   <name>hadoop.tmp.dir</name>
    <value>/opt/data/tmp</value>
  </property>

十六、配置、格式化、啟動HDFS

1、 配置hdfs-site.xml

enter image description here

[hadoop@bigdata-senior01 hadoop-2.5.0]$ vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
    <property>
       <name>dfs.replication</name>
       <value>1</value>
    </property>

dfs.replication配置的是HDFS儲存時的備份數量,因為這裡是偽分散式環境只有一個節點,所以這裡設定為1。

2、 格式化HDFS

enter image description here

[hadoop@bigdata-senior01 ~]$ hdfs namenode –format

格式化是對HDFS這個分散式檔案系統中的DataNode進行分塊,統計所有分塊後的初始元資料的儲存在NameNode中。

格式化後,檢視core-site.xml裡hadoop.tmp.dir(本例是/opt/data目錄)指定的目錄下是否有了dfs目錄,如果有,說明格式化成功。

注意:

  1. 格式化時,這裡注意hadoop.tmp.dir目錄的許可權問題,應該hadoop普通使用者有讀寫許可權才行,可以將/opt/data的所有者改為hadoop。
    [[email protected] hadoop-2.5.0]$ sudo chown -R hadoop:hadoop /opt/data

  2. 檢視NameNode格式化後的目錄。

   [hadoop@bigdata-senior01 ~]$ ll /opt/data/tmp/dfs/name/current

enter image description here

fsimage是NameNode元資料在記憶體滿了後,持久化儲存到的檔案。

fsimage*.md5 是校驗檔案,用於校驗fsimage的完整性。

seen_txid 是hadoop的版本

vession檔案裡儲存:

  • namespaceID:NameNode的唯一ID。

  • clusterID:叢集ID,NameNode和DataNode的叢集ID應該一致,表明是一個叢集。

#Mon Jul 04 17:25:50 CST 2016
namespaceID=2101579007
clusterID=CID-205277e6-493b-4601-8e33-c09d1d23ece4
cTime=0
storageType=NAME_NODE
blockpoolID=BP-1641019026-127.0.0.1-1467624350057
layoutVersion=-57

3、 啟動NameNode

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode
starting namenode, logging to /opt/modules/hadoop-2.5.0/logs/hadoop-hadoop-namenode-bigdata-senior01.chybinmy.com.out

enter image description here

4、 啟動DataNode

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode
starting datanode, logging to /opt/modules/hadoop-2.5.0/logs/hadoop-hadoop-datanode-bigdata-senior01.chybinmy.com.out

enter image description here

5、 啟動SecondaryNameNode

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode
starting secondarynamenode, logging to /opt/modules/hadoop-2.5.0/logs/hadoop-hadoop-secondarynamenode-bigdata-senior01.chybinmy.com.out

enter image description here

6、 JPS命令檢視是否已經啟動成功,有結果就是啟動成功了。

[hadoop@bigdata-senior01 hadoop-2.5.0]$ jps
3034 NameNode
3233 Jps
3193 SecondaryNameNode
3110 DataNode

enter image description here

7、 HDFS上測試建立目錄、上傳、下載檔案

HDFS上建立目錄

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/bin/hdfs dfs -mkdir /demo1

上傳本地檔案到HDFS上

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/bin/hdfs dfs -put 
${HADOOP_HOME}/etc/hadoop/core-site.xml /demo1

讀取HDFS上的檔案內容

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/bin/hdfs dfs -cat /demo1/core-site.xml

enter image description here

從HDFS上下載檔案到本地

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -get /demo1/core-site.xml

enter image description here

十七、配置、啟動YARN

1、 配置mapred-site.xml

預設沒有mapred-site.xml檔案,但是有個mapred-site.xml.template配置模板檔案。複製模板生成mapred-site.xml。

[hadoop@bigdata-senior01 hadoop-2.5.0]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

新增配置如下:

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

指定mapreduce執行在yarn框架上。

enter image description here

2、 配置yarn-site.xml

新增配置如下:

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bigdata-senior01.chybinmy.com</value>
 </property>
  • yarn.nodemanager.aux-services配置了yarn的預設混洗方式,選擇為mapreduce的預設混洗演算法。

  • yarn.resourcemanager.hostname指定了Resourcemanager執行在哪個節點上。

    enter image description here

3、 啟動Resourcemanager

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager

enter image description here

4、 啟動nodemanager

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanager

enter image description here

5、 檢視是否啟動成功

[hadoop@bigdata-senior01 hadoop-2.5.0]$ jps
3034 NameNode
4439 NodeManager
4197 ResourceManager
4543 Jps
3193 SecondaryNameNode
3110 DataNode

可以看到ResourceManager、NodeManager已經啟動成功了。

enter image description here

6、 YARN的Web頁面

enter image description here

十八、執行MapReduce Job

在Hadoop的share目錄裡,自帶了一些jar包,裡面帶有一些mapreduce例項小例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar,可以執行這些例子體驗剛搭建好的Hadoop平臺,我們這裡來執行最經典的WordCount例項。

1、 建立測試用的Input檔案

建立輸入目錄:

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -mkdir -p /wordcountdemo/input

建立原始檔案:

在本地/opt/data目錄建立一個檔案wc.input,內容如下。

enter image description here

將wc.input檔案上傳到HDFS的/wordcountdemo/input目錄中:

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -put /opt/data/wc.input /wordcountdemo/input

enter image description here

2、 執行WordCount MapReduce Job

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.5.0.jar wordcount /wordcountdemo/input /wordcountdemo/output

enter image description here

3、 檢視輸出結果目錄

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -ls /wordcountdemo/output
-rw-r--r--   1 hadoop supergroup          0 2016-07-05 05:12 /wordcountdemo/output/_SUCCESS
-rw-r--r--   1 hadoop supergroup         60 2016-07-05 05:12 /wordcountdemo/output/part-r-00000

enter image description here

  • output目錄中有兩個檔案,_SUCCESS檔案是空檔案,有這個檔案說明Job執行成功。

  • part-r-00000檔案是結果檔案,其中-r-說明這個檔案是Reduce階段產生的結果,mapreduce程式執行時,可以沒有reduce階段,但是肯定會有map階段,如果沒有reduce階段這個地方有是-m-。

  • 一個reduce會產生一個part-r-開頭的檔案。

  • 檢視輸出檔案內容。

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -cat /wordcountdemo/output/part-r-00000
hadoop  3
hbase   1
hive    2
mapreduce       1
spark   2
sqoop   1
storm   1

結果是按照鍵值排好序的。

十九、停止Hadoop

 [hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/hadoop-daemon.sh stop namenode
stopping namenode
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/hadoop-daemon.sh stop datanode
stopping datanode
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/yarn-daemon.sh stop resourcemanager
stopping resourcemanager
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager

enter image description here

二十、 Hadoop各個功能模組的理解

1、 HDFS模組

HDFS負責大資料的儲存,通過將大檔案分塊後進行分散式儲存方式,突破了伺服器硬碟大小的限制,解決了單臺機器無法儲存大檔案的問題,HDFS是個相對獨立的模組,可以為YARN提供服務,也可以為HBase等其他模組提供服務。

2、 YARN模組

YARN是一個通用的資源協同和任務排程框架,是為了解決Hadoop1.x中MapReduce裡NameNode負載太大和其他問題而建立的一個框架。

YARN是個通用框架,不止可以執行MapReduce,還可以執行Spark、Storm等其他計算框架。

3、 MapReduce模組

MapReduce是一個計算框架,它給出了一種資料處理的方式,即通過Map階段、Reduce階段來分散式地流式處理資料。它只適用於大資料的離線處理,對實時性要求很高的應用不適用。

第七步、開啟歷史服務

二十一、歷史服務介紹

Hadoop開啟歷史服務可以在web頁面上檢視Yarn上執行job情況的詳細資訊。可以通過歷史伺服器檢視已經執行完的Mapreduce作業記錄,比如用了多少個Map、用了多少個Reduce、作業提交時間、作業啟動時間、作業完成時間等資訊。

二十二、開啟歷史服務

[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/mr-jobhistory-daemon.sh start historyserver、

開啟後,可以通過Web頁面檢視歷史伺服器:

二十三、Web檢視job執行歷史

1、 執行一個mapreduce任務

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.5.0.jar wordcount /wordcountdemo/input /wordcountdemo/output1

2、 job執行中

enter image description here

3、 檢視job歷史

enter image description here

enter image description here

歷史伺服器的Web埠預設是19888,可以檢視Web介面。

但是在上面所顯示的某一個Job任務頁面的最下面,Map和Reduce個數的連結上,點選進入Map的詳細資訊頁面,再檢視某一個Map或者Reduce的詳細日誌是看不到的,是因為沒有開啟日誌聚集服務。

二十四、開啟日誌聚集

4、 日誌聚集介紹

MapReduce是在各個機器上執行的,在執行過程中產生的日誌存在於各個機器上,為了能夠統一檢視各個機器的執行日誌,將日誌集中存放在HDFS上,這個過程就是日誌聚集。

5、 開啟日誌聚集

配置日誌聚集功能:

Hadoop預設是不啟用日誌聚集的。在yarn-site.xml檔案裡配置啟用日誌聚集。

<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
 </property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
 </property>

yarn.log-aggregation-enable:是否啟用日誌聚集功能。

yarn.log-aggregation.retain-seconds:設定日誌保留時間,單位是秒。

將配置檔案分發到其他節點:

[hadoop@bigdata-senior01 hadoop]$ scp /opt/modules/hadoop-2.5.0/etc/hadoop/yarn-site.xml bigdata-senior02.chybinmy.com:/opt/modules/hadoop-2.5.0/etc/hadoop/
[hadoop@bigdata-senior01 hadoop]$ scp /opt/modules/hadoop-2.5.0/etc/hadoop/yarn-site.xml bigdata-senior03.chybinmy.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

重啟Yarn程序:

[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/stop-yarn.sh
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/start-yarn.sh

重啟HistoryServer程序:

[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/mr-jobhistory-daemon.sh stop historyserver
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/mr-jobhistory-daemon.sh start historyserver

6、 測試日誌聚集

執行一個demo MapReduce,使之產生日誌:

bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input /output1

檢視日誌:

執行Job後,就可以在歷史伺服器Web頁面檢視各個Map和Reduce的日誌了。

第四部分:完全分散式安裝

第八步、完全布式環境部署Hadoop

完全分部式是真正利用多臺Linux主機來進行部署Hadoop,對Linux機器叢集進行規劃,使得Hadoop各個模組分別部署在不同的多臺機器上。

二十五、環境準備

1、 克隆虛擬機器

  • Vmware左側選中要克隆的機器,這裡對原有的BigData01機器進行克隆,虛擬機器選單中,選中管理選單下的克隆命令。

  • 選擇“建立完整克隆”,虛擬機器名稱為BigData02,選擇虛擬機器檔案儲存路徑,進行克隆。

  • 再次克隆一個名為BigData03的虛擬機器。

2、 配置網路

修改網絡卡名稱:

在BigData02和BigData03機器上編輯網絡卡資訊。執行sudo vim /etc/udev/rules.d/70-persistent-net.rules命令。因為是從BigData01機器克隆來的,所以會保留BigData01的網絡卡eth0,並且再新增一個網絡卡eth1。並且eth0的Mac地址和BigData01的地址是一樣的,Mac地址不允許相同,所以要刪除eth0,只保留eth1網絡卡,並且要將eth1改名為eth0。將修改後的eth0的mac地址複製下來,修改network-scripts檔案中的HWADDR屬性。

sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

enter image description here

修改網路引數:

BigData02機器IP改為192.168.100.12

BigData03機器IP改為192.168.100.13

3、 配置Hostname

BigData02配置hostname為 bigdata-senior02.chybinmy.com

BigData03配置hostname為 bigdata-senior03.chybinmy.com

4、 配置hosts

BigData01、BigData02、BigData03三臺機器hosts都配置為:

[[email protected] hadoop-2.5.0]$ sudo vim /etc/hosts
192.168.100.10 bigdata-senior01.chybinmy.com
192.168.100.12 bigdata-senior02.chybinmy.com
192.168.100.13 bigdata-senior03.chybinmy.com

5、 配置Windows上的SSH客戶端

在本地Windows中的SSH客戶端上新增對BigData02、BigData03機器的SSH連結。

二十六、伺服器功能規劃

bigdata-senior01.chybinmy.com bigdata-senior02.chybinmy.com bigdata-senior03.chybinmy.com
NameNode ResourceManage
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer SecondaryNameNode

二十七、在第一臺機器上安裝新的Hadoop

為了和之前BigData01機器上安裝偽分散式Hadoop區分開來,我們將BigData01上的Hadoop服務都停止掉,然後在一個新的目錄/opt/modules/app下安裝另外一個Hadoop。
我們採用先在第一臺機器上解壓、配置Hadoop,然後再分發到其他兩臺機器上的方式來安裝叢集。

6、 解壓Hadoop目錄:

[[email protected] modules]$ tar -zxf /opt/sofeware/hadoop-2.5.0.tar.gz -C /opt/modules/app/

7、 配置Hadoop JDK路徑修改hadoop-env.sh、mapred-env.sh、yarn-env.sh檔案中的JDK路徑:

export JAVA_HOME="/opt/modules/jdk1.7.0_67"

8、 配置core-site.xml

[[email protected] hadoop-2.5.0]$ vim etc/hadoop/core-site.xml
<configuration>
 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://bigdata-senior01.chybinmy.com:8020</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/modules/app/hadoop-2.5.0/data/tmp</value>
 </property>
</configuration>

fs.defaultFS為NameNode的地址。

hadoop.tmp.dir為hadoop臨時目錄的地址,預設情況下,NameNode和DataNode的資料檔案都會存在這個目錄下的對應子目錄下。應該保證此目錄是存在的,如果不存在,先建立。

9、 配置hdfs-site.xml

[[email protected] hadoop-2.5.0]$ vim etc/hadoop/hdfs-site.xml
<configuration>
 <property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>bigdata-senior03.chybinmy.com:50090</value>
 </property>
</configuration>

dfs.namenode.secondary.http-address是指定secondaryNameNode的http訪問地址和埠號,因為在規劃中,我們將BigData03規劃為SecondaryNameNode伺服器。

所以這裡設定為:bigdata-senior03.chybinmy.com:50090

10、 配置slaves

[[email protected] hadoop-2.5.0]$ vim etc/hadoop/slaves
bigdata-senior01.chybinmy.com
bigdata-senior02.chybinmy.com
bigdata-senior03.chybinmy.com

slaves檔案是指定HDFS上有哪些DataNode節點。

11、 配置yarn-site.xml

[[email protected] hadoop-2.5.0]$ vim etc/hadoop/yarn-site.xml
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>bigdata-senior02.chybinmy.com</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
    </property>

根據規劃yarn.resourcemanager.hostname這個指定resourcemanager伺服器指向bigdata-senior02.chybinmy.com

yarn.log-aggregation-enable是配置是否啟用日誌聚集功能。

yarn.log-aggregation.retain-seconds是配置聚集的日誌在HDFS上最多儲存多長時間。

12、 配置mapred-site.xml

從mapred-site.xml.template複製一個mapred-site.xml檔案。

[[email protected] hadoop-2.5.0]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>bigdata-senior01.chybinmy.com:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>bigdata-senior01.chybinmy.com:19888</value>
    </property>
</configuration>

mapreduce.framework.name設定mapreduce任務執行在yarn上。

mapreduce.jobhistory.address是設定mapreduce的歷史伺服器安裝在BigData01機器上。

mapreduce.jobhistory.webapp.address是設定歷史伺服器的web頁面地址和埠號。

二十八、設定SSH無密碼登入

Hadoop叢集中的各個機器間會相互地通過SSH訪問,每次訪問都輸入密碼是不現實的,所以要配置各個機器間的

SSH是無密碼登入的。

1、 在BigData01上生成公鑰

[[email protected] hadoop-2.5.0]$ ssh-keygen -t rsa

一路回車,都設定為預設值,然後再當前使用者的Home目錄下的.ssh目錄中會生成公鑰檔案(id_rsa.pub)和私鑰檔案(id_rsa)

2、 分發公鑰

[[email protected] hadoop-2.5.0]$ ssh-copy-id bigdata-senior01.chybinmy.com
[
            
           

相關推薦

GitChat·資料 | 詳細Hadoop環境搭建

GitChat 作者:鳴宇淳 原文: 史上最詳細的Hadoop環境搭建 關注公眾號:GitChat 技術雜談,一本正經的講技術 【不要錯過文末彩蛋】 前言 Hadoop在大資料技術體系中的地位至關重要,Hadoop是大資料技術的

詳細Windows版本搭建安裝React Native環境配置

gin windows系統 adl 搭建環境 tools 想要 變量 rep home 說在前面的話: 感謝同事金曉冰傾情奉獻本環境搭建教程 之前我們已經講解了React Native的OS X系統的環境搭建以及配置,鑒於各大群裏有很多人反應在Windows環境搭建出現各種

詳細Oracle 12c搭建過程(內附源碼包)

請求 源碼包下載 可用 groupadd set port instr lease 添加 簡介 Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。可以說Oracle

簡單lamp環境搭建

lamp,即linux、Apache、mysql、php 環境:centos 7.4 mysql官網下載安裝mysql-server wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarc

資料入門教程系列之Hadoop環境搭建、軟體準備

本篇文章主要介紹大資料入門教程環境搭建所需要的軟體、環境配置等,為後面的學習做準備。 完成目標: 1、安裝VMware及新建虛擬機器 安裝VMware及新建虛擬機器 2、VMware中安裝centons7 虛擬機器VMware中安裝linux系統CentOS

Hadoop資料元件安裝 詳細教程 手把手教會你安裝

Hadoop安裝--大資料元件安裝--史上最完整教程--手把手教會你安裝  ——徹底揭開大資料技術的面紗,讓小白徹底進入大資料技術領域 安裝的Hadoop的生態圈元件有如下幾個(以後會不斷補充完善起來了)。 (1)Hadoop(單機模式獨立,偽分散式偽分散式,全分散式全

【轉】Hadoop學習--第二篇:詳細Hadoop環境搭建

GitChat 作者:鳴宇淳 原文: 史上最詳細的Hadoop環境搭建 前言 Hadoop在大資料技術體系中的地位至關重要,Hadoop是大資料技術的基礎,對Hadoop基礎知識的掌握的紮實程度,會決定在大資料技術道路上走多遠。 這是一篇入門文章,Hadoop的學

詳細Hadoop環境搭建,從0開始,圖解全部過程

Hadoop在大資料技術體系中的地位至關重要,Hadoop是大資料技術的基礎,對Hadoop基礎知識的掌握的紮實程度,決定在大資料技術道路上走多遠。 這是一篇入門文章,Hadoop的學習方法很多,網上也有很多學習路線圖。本文的思路是:以安裝部署Apache Hadoop2.x版本為主線,來介紹H

詳細全面的Hadoop環境搭建

前言 這是一篇入門文章,Hadoop的學習方法很多,網上也有很多學習路線圖。本文的思路是:以安裝部署Apache Hadoop2.x版本為主線,來介紹Hadoop2.x的架構組成、各模組協同工作原理、技術細節。安裝不是目的,通過安裝認識Hadoop才是目的。 第一部分:L

移植QT5.6到嵌入式開發板(詳細的QT移植教程)

文件傳輸 嵌入式環境 ubun 導致 字庫 etc -a led fill 目前網上的大多數 QT 移植教程還都停留在 qt4.8 版本,或者還有更老的 Qtopia ,但是目前 Qt 已經發展到最新的 5.7 版本了,我個人也已經使用了很長一段時間的 qt5.6 for

詳細nodejs版本管理器nvm的安裝與使用(附註意事項和優化方案)

技術 註意 nod core 遇到 target 快速 方式 get 使用場景 在Node版本快速更新叠代的今天,新老項目使用的node版本號可能已經不相同了,node版本更新越來越快,項目越做越多,node切換版本號的需求越來越迫切,傳統卸載一個版本在安裝另一個版本的方

Android Studio獲取開發版SHA1值和發布版SHA1值的詳細方法

nal code tail JD rip 通過 提示 打開 tor 前言:使用百度地圖時需要秘鑰,申請秘鑰時需要SHA1值,所以今天就總結一下怎麽獲取這個值。 正常情況下: 一、獲取開發版SHA1: 在此我直接用AndroidStudio提供的命令控制臺了,畢竟做Andro

XX-NET詳細完整教程

偽造 不用 app 分享圖片 AS 版本 firefox 配置過程 自動切換 前言   XX-NET,系GAE類代理,即通過可用Google ip連接Google App Engine項目,然後把所有tcp請求發送給Google App Engine,最終實現科學式網絡的

利用Python實現導彈自動追蹤!室友面前的裝逼利器!詳細

技術 取數 跟隨鼠標 構造 制作 思想 室友 相同 精確 不好意思 ,上傳錯了。接著看圖! 由於待會要用pygame演示,他的坐標系是y軸向下,所以這裏我們也用y向下的坐標系。 算法總的思想就是根據上圖,把時間t分割成足夠小的片段(比如1/1000,

詳細Windows下安裝 binwalk

github src cti tro 下載 安裝步驟 clas 文件 命令行 1. https://github.com/ReFirmLabs/binwalk到這裏下載binwalk,下載後解壓。 2. 找到下載後的文件夾, 在這裏要進行安裝步驟,一邊按著shift,一邊

黃聰:詳細的kali安裝教程沒有之一

ner 沒有 操作系統 你是 著作權 如圖所示 鏈接 class 區域 首先在vm裏面新建虛擬機,直接選擇典型,然後下一步。 1 2 然後到了這一步,選擇中間的安裝程序光盤鏡像文件,然後去文件裏面

Kafka詳細原理總結

send shu control 並保存 分布 batch 重傳 應該 還要 Kafka是最初由Linkedin公司開發,是一個分布式、支持分區的(partition)、多副本的(replica),基於zookeeper協調的分布式消息系統,它的最大的特性就是可以實時的處理

詳細的新浪廣告系統技術架構優化歷程

內容來源:2017 年 08 月 10 日,新浪廣告開發技術專家徐挺在“第二屆APMCon中國應用效能管理大會【大規模網路架構優化專場】”上進行的《新浪廣告系統的服務化優化歷程》演講分享。IT 大咖說作為獨家視訊合作方,經主辦方和講者審閱授權釋出。 閱讀字數:

詳細的爬蟲教程,Python採集全網受歡迎的 500 本書!

      想看好書?想知道哪些書比較多人推薦,最好的方式就是看資料,接下來用 Python 爬取噹噹網五星圖書榜 TOP500 的書籍,或許能給我們參考參考! Python爬取目標   爬取噹噹網前500本受歡迎的書籍 解析書籍名稱

[程式碼審計]Emlog 6.0 Beta-詳細程式碼審計分析

*2018-11-02 之前這篇文章發到 Freebuf 上面的由於某些原因刪除了,卻被某些爬蟲網站給抓取了,現在公開,希望大家做一個合理的學習,切勿用於非法用途!官網也更新了6.0正式版,現在作為最後公佈也不存在不妥之處,再次宣告:僅供學習參考,任何由個人行為產生的違法犯罪結果自行承擔!