hadoop集群環境搭建之偽分布式集群環境搭建(一)

hadoop集群環境搭建之偽分布式集群環境搭建(一)

1、Linux基本環境配置

1.1 虛擬機網絡模式選擇NAT

一般虛擬機默認是NAT模式

1.2 修改主機名

vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=zhang    # 主機名

1.3 修改IP

切換root的用戶,修改/etc/sysconfig/network-scripts/ifcfg-eth0文件

有的是/etc/sysconfig/network-scripts/ifcfg-eno16777736文件

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

TYPE=Ethernet
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=2ce59a48-ae92-483b-a73c-7844147b6ba0
HWADDR=00:0C:29:21:8D:08
PREFIX0=24  
DEFROUTE=no
BOOTPROTO=none  # 設置none
ONBOOT=yes  # 開始機自動網絡
IPADDR=192.168.108.99   # 設置IP
NETMASK=255.255.255.0   #  子網掩碼
GATEWAY0=192.168.108.2 # 設置網關

1.4 修改主機名和IP的映射關系

以root用戶,打開/etc/hosts文件

vim /etc/hosts

192.168.108.99 zhang

修改/etc/hostname中文件

vim /etc/hostname

zhang

1.5 關閉防火墻

#查看防火墻狀態
service iptables status
#關閉防火墻
service iptables stop
#查看防火墻開機啟動狀態
chkconfig iptables --list
#關閉防火墻開機啟動
chkconfig iptables off

1.6 修改sudo

切換到root用戶下

su root

修改/etc/sudoers文件權限,不然修改不了該文件

chmod u+w /etc/sudoers

打開/etc/sudoers文件

vim /etc/sudoers

給用戶添加執行的權限

# hadoop 用戶名
hadoop ALL=(root) NOPASSWD:ALL

1.7 關閉linux圖形化界面

centos 7以下版本:

vim /etc/inittab

id:5:initdefault:

改為

id:3:initdefault:

centos 7.x版本:

  • 刪除已經存在的符號鏈接
rm /etc/systemd/system/default.target
  • 默認級別轉換為3
# 默認級別轉換為3(文本模式)
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

# 默認級別轉換為5(圖形模式)
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
  • 重啟
reboot

如果需要切換圖形界面執行命令:startx


2、Linux之java環境安裝

在CentOS 7.x的Linux操作系統下,會自帶openjdk的環境,如果我們想自己安裝jdk環境,需要卸載自帶的openjdk環境。

步驟如下:

2.1 查看java環境

java -version

2.2 查詢jdk

# 查看linux的jdk
rpm -qa | grep jdk

2.3 刪除jdk

# 移除openjdk
yum -y remove java-openjdk-xxxxx

java-openjdk-xxxxx :是需要刪除的openjdk

刪除自帶的openjdk環境后,我們就開始安裝我們的jdk。

2.4 從Windows或其他機器獲取tar包

# 將文件傳出Linux中的用戶目錄
scp D:/dsoftmanager/jdk-8u151-linux-x64.tar.gz root@192.168.108.99:/home/hadoop

D:/dsoftmanager/jdk-8u151-linux-x64.tar.gz:A機器的tar包目錄位置

root@192.168.108.99:/home/hadoop:linux機器存儲tar的目錄位置

2.5 解壓tar包到指定的目錄

# 創建java目錄
mkdir /java

# 將文件復制到java目錄
cp /home/hadoop/jdk-8u151-linux-x64.tar.gz  /java

# 進入/java
cd /java

# 解壓縮
tar -zxvf jdk-8u151-linux-x64.tar.gz 

2.6 配置環境變量

# 打開配置文件
vim /etc/profile

打開/etc/profile文件,在文件的末尾,放入下面的配置信息:

# 配置java環境

JAVA_HOME=/java/jdk1.8.0_151
PATH=$PATH:$JAVA_HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export  JAVA_HOME  PATH  CLASSPATH

2.7 重啟機器

# 立即重啟機器
shutdown -r now

或者

reboot

如果不重啟,配置不會生效。

2.8 java環境測試

# 測試java環境是否安裝成功
java -version
javac -version

出現如下信息,表示安裝成功。

[hadoop@localhost Desktop]$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

[hadoop@localhost Desktop]$ javac -version
javac 1.8.0_151

3、hadoop偽分布式集群環境搭建

關于Linux機器環境和java環境配置,參考我的上一篇文章:hadoop集群環境搭建之Linux基本環境和java環境配置(一),在Linux環境和java環境配置好之后,我們開始搭建hadoop的偽分布式集群(偽分布式集群:在一臺機器上跑hadoop需要的服務)吧。

3.1 上傳hadoop安裝包

scp d:/dsoftmanager/hadoop-2.7.5.tar.gz root@192.168.108.99:/home/hadoop

3.2 解壓安裝包

# 創建一個hadoop的目錄
mkdir /hadoop

# 將/home/hadoop目錄下的hadoop-2.7.5.tar.gz文件復制到/hadoop目錄下
cp /home/hadoop/hadoop-2.7.5.tar.gz /hadoop

# 進入/hadoop目錄
cd /hadoop

# 解壓
tar -zxvf hadoop-2.7.5.tar.gz

3.3 配置hadoop環境變量

# 打開配置文件
vim /etc/profile

# 在配置文件中末尾輸入
export HADOOP_HOME=/hadoop/hadoop-2.7.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

重啟Linux,測試hadoop配置是否生效

# 重啟
reboot

# 測試hadoop環境配置是否生效
echo ${HADOOP_HOME}

輸出:/hadoop/hadoop-2.7.5

3.4 修改hadoop配置

  • 3.4.1 將${HADOOP_HOME}設置權限許可

    sudo chown -R hadoop:hadoop ${HADOOP_HOME}
    
  • 3.4.2 配置hadoop-env.shJAVA_HOME參數

    # 使用sudo命令,打開hadoop-env.sh文件
    sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
    
    # 修改JAVA_HOME的環境配置為如下所示:
    export JAVA_HOME=/java/jdk1.8.0_151
    
  • 3.4.3 配置core-site.xml文件

    # 創建一個tmp目錄
    mkdir ${HADOOP_HOME}/tmp
    
    # 設置權限
    sudo chown hadoop:hadoop ${HADOOP_HOME}/tmp
    
    # 打開core-site.xml文件
    sudo vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
    
    # 在<configuration>中添加配置
    <configuration>
        <!-- 指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://zhang:9000</value>
        </property>
        <!-- 指定hadoop運行時產生臨時文件的存儲目錄 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/hadoop/hadoop-2.7.5/tmp</value>
        </property>
    </configuration>
    
  • 3.4.4 配置hdfs-site.xml文件

    <configuration>
        <!-- 指定HDFS副本的數量 -->
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        
        <property>
            <name>dfs.secondary.http.address</name>
            <value>192.168.108.99:50090</value>
        </property>
    </configuration>
    
  • 3.4.5 配置mapred-site.xml文件

    # 將mapred-site.xml.template改為mapred-site.xml
    sudo mv mapred-site.xml.template mapred-site.xml
    
    # 配置mapred-site.xml
    <configuration>
        <!-- 指定mr運行在yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  • 3.4.6 配置yarn-site.xml文件

    <configuration>
        <!-- 指定YARN的老大(ResourceManager)的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>zhang</value>
        </property>
        <!-- reducer獲取數據的方式 -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    

3.5 格式化namenode

hdfs namenode -format

格式化成功會在${HADOOP_HOME}/tmp/dfs/name/current/目錄生成幾個文件,表示成功,如下:

image

3.6 啟動各個服務

進入${HADOOP_HOME}目錄

  • 3.6.1 啟動namenode

    # 啟動namenode
    sbin/hadoop-daemon.sh start namenode
    

    出現如下結果,表示啟動成功

    image
  • 3.6.2 啟動datanode

    # 啟動datanode
    sbin/hadoop-daemon.sh start datanode
    

    出現如下結果,表示啟動成功

    image
  • 3.6.3 啟動SecondaryNameNode

    # 啟動secondarynamenode
    sbin/hadoop-daemon.sh start secondarynamenode
    

    出現如下結果,表示啟動成功

    image
  • 3.6.4 啟動Resourcemanager

    # 啟動resourcemanager
    sbin/yarn-daemon.sh start resourcemanager
    

    出現如下結果,表示啟動成功

    image
  • 3.6.5 啟動nodemanager

    # 啟動nodemanager
    sbin/yarn-daemon.sh start nodemanager
    

    出現如下結果,表示啟動成功

    image
  • 3.6.6 使用jsp命令查看是否啟動成功

    image
  • 3.6.7 啟動dfs服務和yarn服務的另外方式

    # 開啟dfs,包括namenode,datanode,secondarynamenode服務
    sbin/start-dfs.sh 
    
    # 開啟yarn,包括resourcemanager,nodemanager
    sbin/start-yarn.sh
    
    # 開啟所有的服務(過時)
    sbin/start-all.sh
    

    在執行啟動時,需要輸入用戶密碼

    image
  • 3.6.8 打開yarn的web頁面

    YARN的Web客戶端端口號是8088,通過http://192.168.108.99:8088/可以查看。

    image

3.7 運行MapReduce Job

在Hadoop的share目錄中,自帶jar包,里面有一些MapReduce的例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar。我們可以使用這些例子體驗搭建好的Hadoop平臺。我們以wordCount為例。

  • 3.7.1 創建輸入目錄

    # 進入${HADOOP_HOME}目錄
    cd ${HADOOP_HOME}
    
    # 創建輸入目錄
    bin/hdfs dfs -mkdir -p /wordcounttest/input
    
  • 3.7.2 創建測試文件wc.input,內容如下:

    ${HADOOP_HOME}目錄下,創建一個data目錄。在data目錄下創建一個wc.input文件,文件內容:

    # 創建data目錄
    mkdir data
    
    # 進入data目錄
    cd data
    
    # 創建wc.input
    vim wc.input
    
    # 在文件中輸入,如下內容
    
    hadoop mapreduce hive
    hbase spark storm
    sqoop hadoop hive
    spark hadoop
    
  • 3.7.3 將wc.input文件上傳到HDFS的/wordcounttest/input目錄下:

    bin/hdfs dfs -put data/wc.input /wordcounttest/input
    
  • 3.7.4 查看/wordcounttest/input目錄

    bin/hdfs dfs -ls /wordcounttest/input
    
    image
  • 3.7.5 運行WordCount MapReduce Job

    bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount  /wordcounttest/input /wordcounttest/output
    
    image
  • 3.7.6 查看輸出結果目錄

    bin/hdfs dfs -ls /wordcounttest/output
    
    image
    • output目錄中有兩個文件,_SUCCESS文件是空文件,有這個文件說明Job執行成功。

    • part-r-00000文件是結果文件,其中-r-說明這個文件是Reduce階段產生的結果。

  • 3.7.7 查看輸出文件結果

    bin/hdfs dfs -cat /wordcounttest/output/part-r-00000
    
    image

3.8 停止Hadoop服務

# 停止namenode
sbin/hadoop-daemon.sh stop namenode

# 停止datanode
sbin/hadoop-daemon.sh stop datanode

# 停止resourcemanager
sbin/yarn-daemon.sh stop resourcemanager
 停止nodemanager
sbin/yarn-daemon.sh stop nodemanager

停止Hadoop服務的其他方式

# 停止dfs服務
sbin/stop-dfs.sh

# 停止yarn服務
sbin/stop-yarn.sh


# 停止所有服務
sbin/stop-all.sh
image

注1:開啟歷史服務

sbin/mr-jobhistory-daemon.sh start historyserver

可以通過http://192.168.108.99:19888打開,可看到JobHistory頁面

image

點擊進去,可看見Job的詳情頁面。

image

注2:開啟日志

hadoop默認不啟動日志,我們可以在yarn-site.xml文件中配置啟用日志。

  • 1.log環境配置
<property>
    <!--是否啟用日志-->
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <!--設置日志保存時間,單位秒-->
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
</property>
  • 2.重啟Yarn進程
# 停止yarn服務
sbin/stop-yarn.sh

# 啟動yarn服務
sbin/start-yarn.sh
  • 3.重啟HistoryServer進程
# 停止HistoryServer服務
sbin/mr-jobhistory-daemon.sh stop historyserver

# 開啟HistoryServer服務
sbin/mr-jobhistory-daemon.sh start historyserver
  • 4.測試日志,運行一個MapReduce的demo,產生日志
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wordcounttest/input /wordcounttest/output2
  • 5.查看日志:

進入MapReduce的Job頁面

image

點擊進入log頁面,如下

image

如果沒有配置yarn-site.xml中的log配置,不會出現log,而是一串提示文字。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容