從0開始學大數據(3):Hadoop本地模式和僞分佈模式的應用

前言

上一篇文章《從0開始學大數據(2):hadoop安裝》我們對hadoop工具進行了安裝,這章我們對hadoop的官網案例進行講解,讓我們對hadoop進行初步入門。

Hadoop運行模式

Hadoop運行模式

  • 本地模式(默認模式):不需要啓用單獨進程,直接可以運行,測試和開發使用
  • 僞分佈模式:等同於完全分佈式,只有一個節點。
  • 完全分佈模式:多個節點一起運行

1.本地文件運行Hadoop案例

1.1 官方grep案例

  • 拷貝hadoop的etc/hadoop下的xml文件到input目錄下
[martin@hadoop101 hadoop-2.7.2]$ sudo cp etc/hadoop/*.xml input
  • 執行share目錄下的mapreduce程序
sudo bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
  • 查看輸入結果
    將用例集合中的已dfs開頭的文件過濾,從輸入文件input到輸出到output文件夾中,其中output文件夾不能創建。
    在這裏插入圖片描述
    我們通過觀察part-r-00000文件,就找到了裏面的結果集顯示配置文件中的以dfs開頭的文件dfsadmin

1.2 官方wordcount案例

這次我就將步驟和命令分開,這樣比較容易分析:

  • 創建在hadoop-2.7.2文件下創建一個wcinput文件夾
  • 在wcinput文件下創建一個wc.input文件
  • 編輯wc.input文件
  • 回到hadoop目錄/opt/module/hadoop-2.7.2
  • 執行程序
  • 查看結果
[martin@hadoop101 hadoop-2.7.2]$ mkdir wcinput
[martin@hadoop101 hadoop-2.7.2]$ cd wcinput/
[martin@hadoop101 wcinput]$ ls
[martin@hadoop101 wcinput]$ touch wc.input
[martin@hadoop101 wcinput]$ vim wc.input
[martin@hadoop101 wcinput]$ cd ..
[martin@hadoop101 hadoop-2.7.2]$ ls
LICENSE.txt  NOTICE.txt  README.txt  bin  etc  include  input  lib  libexec  output  sbin  share  wcinput
[martin@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput/ wcoutput
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput/ wcoutput
[martin@hadoop101 hadoop-2.7.2]$ cd wcoutput/
[martin@hadoop101 wcoutput]$ ls
_SUCCESS  part-r-00000
[martin@hadoop101 wcoutput]$ cat part-r-00000
date	1
david	1
franky	1
hadoop	1
jacky	1
java	1
jimmy	1
kafka	1
martin	1
sarah	1
whisly	1

2.僞分佈式運行Hadoop案例

2.1 HDFS上運行MapReduce程

配置集羣
  • 1.修改/hadoop-2.7.2/etc/hadoop/core-site.xml文件,如果是在Mac下我推薦在Sublime Text3 安裝sftp的插件,我們將下面的內容複製到xml文件中。
<configuration>
	<!-- 指定HDFS中NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
	    <value>hdfs://hadoop101:8020</value>
	</property>
</configuration>

官網的core-default.xmlfs.defaultFS默認是本地文件,這裏是將本地文件修改爲我們制定的節點。

  • 2.修改hdfs-default.xml配置文件
    數據需要備份,我們需要配置數據配置在地方,同樣,我們可以在官網查看一下默認值。
<configuration>
<!-- 指定HDFS副本的數量 -->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>

集羣中增加了節點,我們可以對數據再次進行備份。

啓動集羣
  • 格式化namenode(第一次啓動時格式化,以後就不要總格式化)
hdfs namenode -format
  • 啓動namenode
sbin/hadoop-daemon.sh start namenode
  • 啓動datanode
sbin/hadoop-daemon.sh start datanode
查看集羣
  • 查看是否啓動成功
    jps:查看java進程
[martin@hadoop101 sbin]$ jps
24519 Jps
24428 DataNode
23832 NameNode
  • 查看產生的log日誌
[martin@hadoop101 hadoop-2.7.2]$ cd logs
[martin@hadoop101 logs]$ ll
total 60
-rw-rw-r--. 1 martin martin     0 Feb 15 17:17 SecurityAuth-martin.audit
-rw-rw-r--. 1 martin martin 23678 Feb 15 17:20 hadoop-martin-datanode-hadoop101.log
-rw-rw-r--. 1 martin martin   716 Feb 15 17:20 hadoop-martin-datanode-hadoop101.out
-rw-rw-r--. 1 martin martin 27470 Feb 15 17:20 hadoop-martin-namenode-hadoop101.log
-rw-rw-r--. 1 martin martin   716 Feb 15 17:17 hadoop-martin-namenode-hadoop101.out
[martin@hadoop101 logs]$ cat hadoop-martin-namenode-hadoop101.log
  • Web端查看HDFS文件系統
    我們在宿主機瀏覽器中輸入10.211.55.101:50070/就可以查看我們的HDFS了,提示一下有些原因不能訪問,是虛擬機的防火牆沒有關閉可以查看這篇文章《CentOS7查看和關閉防火牆》使用命令將防火牆關閉即可訪問。
    在這裏插入圖片描述
操作集羣
  • 創建目錄
    在HDFS文件系統中,根目錄與Linux一樣都是用\表示。
hadoop fs -mkdir -p /user/martin/input

PS:mkdir -p :表示創建多級目錄
在這裏插入圖片描述

  • 向文件夾中上傳文件
hadoop fs -put wcinput/wc.input /user/martin/input

在這裏插入圖片描述

  • 在HDFS上運行Mapreduce程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/martin/input/ /user/martin/output

在這裏插入圖片描述
下載文件結果後即可查看。

  • 刪除輸出結果
hadoop fs -rmr /user/martin/output

2.2 HDFS上運行MapReduce程序

配置集羣
  • 修改yarn-env.sh配置文件的Java_Home
$vi /opt/module/hadoop-2.7.2/etc/hadoop/yarn-env.sh

在這裏插入圖片描述

  • 修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer the way of getting data -->
	<property>
	 	<name>yarn.nodemanager.aux-services</name>
	 	<value>mapreduce_shuffle</value>
	</property>

<!-- ResourceManager address is sepecified on YARN  -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop101</value>
	</property>
</configuration>

yarn.nodemanager.aux-services:是獲取數據的方式
yarn.resourcemanager.hostname:資源管理所在的主機名稱

  • 修改mapred-env.sh配置文件的Java_Home
$vi /opt/module/hadoop-2.7.2/etc/hadoop/mapred-env.sh

在這裏插入圖片描述

  • 修改mapred-site.xml配置文件
<configuration>
<!-- 指定mr運行在yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>
啓動集羣
  • namenode:目錄節點
sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh start namenode
  • datanode:數據節點
sbin/hadoop-daemon.sh stop datanode
sbin/hadoop-daemon.sh start datanode
  • resourcemanager:資源管理器
sbin/yarn-daemon.sh start resourcemanager
  • nodemanager:節點管理器
sbin/yarn-daemon.sh start nodemanager
  • 查看結果
[martin@hadoop101 hadoop-2.7.2]$ jps
23733 ResourceManager
22940 NodeManager
20853 NameNode
23773 Jps
20982 DataNode
集羣操作
  • yarn的瀏覽器頁面查看,輸入網址http://10.211.55.101:8088/cluster
    在這裏插入圖片描述
    上圖主要是查看MapReduce應用程序運行過程。
  • 執行MapReduce應用程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/martin/input /user/martin/output

在這裏插入圖片描述
可以看結果就是,先Map完成後纔會執行Reduce操作。

2.3 修改本地臨時存儲目錄

默認情況下,在執行結果的時候會產生一些臨時文件保存到/tmp
在這裏插入圖片描述
上面運行結果中的臨時文件命名:hadoop-[當前用戶],現在我們需要對這個臨時目錄修改到我們的制定的目錄下。

  • 創建臨時目錄
mkdir -p data/tmp
  • 添加下面配置到core-site.xml
vi etc/hadoop/core-site.xml
	<!-- 指定hadoop運行時產生文件的存儲目錄 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
	</property>

修改好配置以後,讀取配置文件是在服務啓動的時候纔會產生,所以,我們需要重啓服務。

  • 停止所有服務
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/hadoop-daemon.sh stop datanode
sbin/hadoop-daemon.sh stop namenode
  • 刪除臨時文件
rm -rf /tmp/hadoop-martin/
  • 刪除logs
rm -rf logs/
  • 格式化namenode
bin/hdfs namenode -format
  • 開啓所有的服務。
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start namenode
  • 查看所有服務
[martin@hadoop101 hadoop-2.7.2]$ jps
16678 ResourceManager
16263 NameNode
17024 Jps
16491 DataNode
16958 NodeManager
  • 查看修改後臨時文件夾
    在這裏插入圖片描述
    看見紅框後代表修改成功。

小結

這篇文章我們學習到了Hadoop的運行模式:

  • 本地模式
  • 僞分佈模式
  • 完全分佈模式

通過配置前兩種模式,我們使用官網的wordcount案例對我們的單詞數據進行了分析讓我們對hadoop進行了入門學習,由於篇幅原因下篇我在講解完全分佈式部署。

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