1. 程式人生 > >Hadoop 四種環境部署 (二)

Hadoop 四種環境部署 (二)

四種部署模式

本地模式,偽分散式模式,完全分散式模式,HA完全分散式模式

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

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

1.本地模式

所有的模組都執行在一個JVM程序中,使用的不是HDFS而是本地檔案系統.下載的安裝包不進行任何配置,預設就是本地模式

  1. 安裝前確認已經安裝了JDK
    echo $JAVA_HOME
  2. 解壓檔案到指定目錄

這樣我們就完成了本地模式的搭建.我們可以執行一下hadoop自帶的wordcount例子來實驗一下

首先,準備一個輸入檔案word_count.input,內容可以如下

hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop

執行wordcount demo

[hadoop@bigdata-senior01 hadoopstandalone]$ ${HADOOP_HOME}/bin/hadoop jar ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1
.1.jar wordcount ~/word_count.input ~/word_count_output

執行完畢後可以看到輸入結果是一個目錄,目錄下有兩個檔案:_SUCCESSpart-r-00000,其中part-r-00000是結果輸入,_SUCCESS表示任務執行成功

2.偽分散式模式

1.配置hadoop-env.sh,mapred-env.sh,yarn-env.sh中的JAVA_HOME引數

export JAVA_HOME=${你的JDK目錄}

2.配置core-site.xml

<property>
    <name>fs.defaultFS</name
>
<value>hdfs://localhost:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/export/hadoop/tmp</value> </property>
  • fs.defaultFS配置的是HDFS的地址
  • hadoop.tmp.dir配置的是NameNode資料儲存的目錄

hadoop.tmp.dir預設地址是/tmp/hadoop-${user.name},每次系統重啟後,tmp目錄下的資料將會被清空

3.格式化HDFS並重啟

  • 配置hdfs-site.xml
<property>
   <name>dfs.replication</name>
   <value>1</value>
</property>

這裡的dfs.replication指的是HDFS儲存時的備份數量

  • 格式化HDFS
${HADOOP_HOME}/bin/hdfs namenode -format

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

格式化後可以檢視指定的hadoop.tmp.dir目錄下是否有dfs目錄

4.啟動NameNode和DataNode

[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs --daemon start namenode
[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs --daemon start secondarynamenode
[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs --daemon start datanode
[root@izj6cj3wje0m1jxumjkuelz ~]# jps
16936 NameNode
3034 Bootstrap
17181 Jps
17150 SecondaryNameNode
17038 DataNode

5.測試在HDFS上建立目錄、上傳和下載檔案

首先建立一個test目錄

[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs dfs -mkdir /test
[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs dfs -ls /
Found 5 items
drwxr-xr-x   - root supergroup          0 2018-08-13 20:51 /demo
drwxr-xr-x   - root supergroup          0 2018-08-12 11:06 /demo1
drwxr-xr-x   - root supergroup          0 2018-08-13 20:52 /test
drwx------   - root supergroup          0 2018-08-12 11:20 /tmp
drwxr-xr-x   - root supergroup          0 2018-08-12 11:18 /wordcountdemo

上傳檔案到HDFS上

[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs dfs -put ~/word_count.input /test
[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs dfs -ls /test
Found 1 items
-rw-r--r--   1 root supergroup         71 2018-08-13 20:53 /test/word_count.input

下載檔案到本地目錄

[root@izj6cj3wje0m1jxumjkuelz ~]# hdfs dfs -get /test/word_count.input tmp/
[root@izj6cj3wje0m1jxumjkuelz ~]# ls tmp/
word_count.input

6.配置和啟動Yarn

  • 首先配置mapred-site.xml,指定mapreduce執行在yarn框架上
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • 配置yarn-site.xml
<!--配置yarn的混選方式,選擇為預設混選演算法-->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager執行在哪個節點上-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>localhost</value>
</property>
<!-- Site specific YARN configuration properties -->
<!--開啟日誌聚集-->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
 </property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
 </property>
  • 啟動ResourceManager
[root@izj6cj3wje0m1jxumjkuelz etc]# yarn --daemon start resourcemanager
[root@izj6cj3wje0m1jxumjkuelz etc]# yarn --daemon start nodemanager
[root@izj6cj3wje0m1jxumjkuelz etc]# jps
18401 NodeManager
18515 Jps
16936 NameNode
3034 Bootstrap
17979 ResourceManager
17150 SecondaryNameNode
17038 DataNode
  • 開啟歷史服務

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

[root@izj6cj3wje0m1jxumjkuelz etc]# mapred --daemon start historyserver
  • 開啟日誌聚集

在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:設定日誌保留時間,單位是秒