Hadoop開發入門與實踐(二)

Hadoop開發入門與實踐(二)

一、Linux Hadoop環境開發

(一)安裝JDK

1、下載Oracle JDK安裝文件

[root@localhost ~]# wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz

2、解壓下載文件

(1)創建Java目錄

[root@localhost ~]# mkdir /usr/java

(2)解壓文件

創建Java目錄:
[root@localhost ~]# mkdir /usr/java
[root@localhost ~]# tar zxvf jdk-8u151-linux-x64.tar.gz -C /usr/java

3、配置環境變量

[root@localhost ~]# vi /etc/profile
在文件結尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=PATH: JAVA_HOME/bin

4、驗證測試

[root@localhost ~]# echo $JAVA_HOME
[root@localhost ~]# java –version

(二)Hadoop佈署方式

Hadoo部署模式有:本地模式、僞分佈模式、完全分佈式模式。
區分的依據是 NameNode、DataNode、ResourceManager、NodeManager 等模塊運行在幾個JVM 進程、幾個機器。

模式名稱 各模塊佔用的JVM進程數 各模塊運行機器數
本地模式 1 個 1 個
僞分佈式模式 N 個 1 個
集羣模式 N 個 N 個

1、Hadoop下載:

[root@localhost ~]# curl -O http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz

2、解壓文件

(1) 目錄創建hadoop目錄

[root@localhost /]# mkdir /hadoop

(2) 解壓文件:

[root@localhost hadoop]# tar -zxvf hadoop-2.7.4.tar.gz -C /hadoop
images

3、目錄結構

目錄 文件 說明
bin 存放的可執行腳本,所有的用戶都有執行的權限
sbin start-dfs.sh 只有超級用戶(superuser)纔有權限執行的腳本
start-yarn.sh 只有超級用戶(superuser)纔有權限執行的腳本
stop-dfs.sh 只有超級用戶(superuser)纔有權限執行的腳本
stop-yarn.sh 只有超級用戶(superuser)纔有權限執行的腳本
etc core-site.xml 配置文件,common
hdfs-site.xml 配置文件, hdfs
mapred-site.xml 配置文件, mapreduce(yarn)的配置信息。
include C語言接口開發用到的頭文件
lib 庫文件
share 存放的是doc文檔和最重要的Hadoop源代碼編譯生成的jar包文件。
libexec 目錄下存放的是hadoop的配置腳本
logs 日誌文件

(三)獨立模式(standalone或local mode)

  本地模式是最簡單的模式,所有模塊都運行與一個JVM 進程中,使用的本地文件系統,而不是HDFS,本地模式主要是用於本地開發過程中的運行調試用。下載hadoop 安裝包後不用任何設置,默認的就是本地模式。

1、運行MapReduce程序測試:

(1)用hadoop自帶的 wordcount 例子來在本地模式下測試跑mapreduce:

創建目錄:data:
準備mapreduce輸入文件wordcount.txt
hello
hbase
spark
storm
sqoop
hadoop
hive
spark
hadoop
world
iamges

(2)運行測試

[root@localhost hadoop-2.7.4]#./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /root/wordcount.txt output
images 這裏可以看到 job ID 中有 local 字樣,說明是運行在本地模式下的。
本地模式下,mapreduce的輸出是輸出到本地。
[root@localhost hadoop-2.7.4]# ll output
總用量 4
-rw-r–r–. 1 root root 53 12月 12 08:02 part-r-00000
-rw-r–r–. 1 root root 0 12月 12 08:02 _SUCCESS
輸出目錄中有_SUCCESS 文件說明 JOB 運行成功,part-r-00000 是輸出結果文件。
part-r-0000這個文件時存放在hdfs上的,並非本地文件系統。

(3)查看輸出結果:

[root@localhost hadoop-2.7.4]# cat output/*
images

(四)僞分佈模式

1、修改配置文件:

(1)配置Hadoop環境變量

[root@localhost hadoop-2.7.4]# vi /etc/profile
追加內容:
export HADOOP_HOME=/hadoop/hadoop-2.7.4
export PATH=PATH: JAVA_HOME/bin:HADOOPHOME/bin: HADOOP_HOME/sbin
images

(2) 環境驗證:

root@localhost /]# source /etc/profile
[root@localhost hadoop-2.7.4]# echo $HADOOP_HOME
/hadoop/hadoop-2.7.4

(3) 修改hadoop-env.hs中的Java環境變量:

export JAVA_HOME=/usr/java/jdk1.8.0_151
[root@localhost hadoop-2.7.4]# vi etc/hadoop/hadoop-env.sh
images

(4) 核心配置:core-site.xml

[root@localhost hadoop-2.7.4]# vi ${HADOOP_HOME}/etc/hadoop/core-site.xml
fs.defaultFS:用來指定HDFS的(NameNode)的地址:
Hadoop.tmp.dir:用來指定Hadoop運行時產生文件的存放目錄
比如 HDFS 的 NameNode 數據默認都存放這個目錄下, 查看*-default.xml等默認配置文件,就可以看到很多依賴${hadoop.tmp.dir}的配置。
默認hadoop.tmp.dir 是/tmp/hadoop-${user.name},此時有個問題就是 NameNode 會將 HDFS 的元 數據存儲在這個/tmp目錄下,如果操作系統重啓了,系統會清空/tmp 目錄下的東西,導致 NameNode 元數據丟失,是個非常嚴重的問題,所有我們應該修改這個路徑。
添加:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoopmaster:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/hadoop/hadoop-2.7.4/tmp</value>
        </property>
</configuration>

注意:
一定要修改主機名與之對應。
[root@localhost ~]# vi /etc/hosts
添加:
192.168.191.141 hadoopmaster

(5) 創建臨時目錄:

[root@localhost hadoop-2.7.4]# mkdir tmp

(6) HDFS配置文件:hdfs-site.xml

[root@localhost hadoop-2.7.4]# vi ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
fs.replicatio:指定hdfs保存數據副本的數量:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
(7) 格式化 HDFS

[root@localhost hadoop-2.7.4]# ./bin/hdfs namenode -format
  格式化是對 HDFS這個分佈式文件系統中的DataNode 進行分塊,統計所有分塊後的初始元數據的存儲在NameNode中。
  格式化後,查看core-site.xml 裏 hadoop.tmp.dir指定的目錄下是否有了dfs目錄,如果有,說明格式化成功。
fsimage是NameNode元數據在內存滿了後,持久化保存到的文件。
fsimage*.md5是校驗文件,用於校驗 fsimage 的完整性。
seen_txid是 hadoop 的版本.
[root@localhost hadoop-2.7.4]# cat /hadoop/hadoop-2.7.4/tmp/dfs/name/current/VERSION
vession文件裏保存:
namespaceID:NameNode 的唯一ID。
clusterID:集羣ID,NameNode 和 DataNode的集羣ID應該一致,表明是一個集羣。

(8) mapreduce配置:

在etc/hadoop目錄下:mapred-site.xml
將:mapred-site.xml.template 改爲:mapred-site.xml
[root@localhost hadoop]# cp mapred-site.xml.template mapred-site.xml
指定 mapreduce 運行在 yarn 框架上。

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
(9) Yarn配置yarn-site.xml

[root@localhost hadoop]# vi yarn-site.xml
yarn.nodemanager.aux-services:nodemanager獲取數據的方式是shuffle
yarn:指定yarn的主機服務器地址

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoopmaster</value>
        </property>
</configuration>

yarn.nodemanager.aux-services
配置了 yarn 的默認混洗方式,選擇爲 mapreduce 的默認混洗算法。
yarn.resourcemanager.hostname 指定了 Resourcemanager 運行在哪個節點上。
Yarn是一個資源調度系統。

2、hadoop初始化和測試

(1) 初始化文HDFS(格式化文件系統)

查找hadoop臨時目錄命令
[root@localhost hadoop]# which hadoop
/usr/hadoop/hadoop-2.7.4/bin/hadoop

(2) 啓動HDFS和YARN
A. 啓動NameNode

[root@localhost hadoop]# ${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode
[root@localhost hadoop]# jps
images

B. 啓動DataNode

[root@localhost hadoop]# ${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode
[root@localhost hadoop]# jps
images

C. 啓動SecondaryNameNode

[root@localhost hadoop]# ${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode
images

(3) start-all.sh啓動所有節點:

[root@localhost hadoop]# start-all.sh
[root@localhost sbin]# ./start-all.sh
[root@localhost sbin]# jps
images
NodeManager:數據節點
SecondaryNameNode:輔助NameNode

(4) 啓動Resourcemanager

需配置Yarn
[root@localhost hadoop]# ${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanager
images

(5) 瀏覽器訪問管理:

images
namenode管理界面:hdfs
http://192.168.146.128:50070/
iamges
資源管理:
YARN 的 Web 頁面
http://192.168.191.141:8088
iamges

發佈了39 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章