Hadoop 四種環境部署 (二)
四種部署模式
本地模式,偽分散式模式,完全分散式模式,HA完全分散式模式
區分的依據是NameNode、DataNode、ResourceManager、NodeManager等模組執行在幾個JVM程序、幾個機器。
模式名稱 | 各個模組佔用的JVM程序數 | 各個模組執行在幾個機器數上 |
---|---|---|
本地模式 | 1 | 1 |
偽分散式 | N | 1 |
分散式 | N | N |
HA分散式 | N | N |
1.本地模式
所有的模組都執行在一個JVM程序中,使用的不是HDFS而是本地檔案系統.下載的安裝包不進行任何配置,預設就是本地模式
- 安裝前確認已經安裝了JDK
echo $JAVA_HOME
- 解壓檔案到指定目錄
這樣我們就完成了本地模式的搭建.我們可以執行一下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
執行完畢後可以看到輸入結果是一個目錄,目錄下有兩個檔案:_SUCCESS
和part-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:設定日誌保留時間,單位是秒