2桐猬、hadoop運行模式

hadoop運行模式介紹

hadoop有三種運行模式

  1. 本地模式(默認模式):
    不需要啟用單獨進程撑蚌,直接可以運行上遥,測試和開發(fā)時使用。
  2. 偽分布式模式:
    等同于完全分布式争涌,只有一個節(jié)點粉楚。
  3. 完全分布式模式:
    多個節(jié)點一起運行。

本地模式運行Hadoop案例

本地運行官方grep案例

  1. 在hadoop-2.8.3文件夾下面創(chuàng)建一個input文件夾
    mkdir input
  2. 將hadoop的xml配置文件復(fù)制到input
    cp etc/hadoop/*.xml input
  3. 執(zhí)行share目錄下的mapreduce程序
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar grep input output 'dfs[a-z.]+'
  4. 查看輸出結(jié)果

本地運行官方wordcount案例

  1. 在hadoop-2.8.3文件夾下面創(chuàng)建一個wcinput文件夾
    mkdir wcinput
  2. 在wcinput文件下創(chuàng)建一個wc.input文件,并輸入以下內(nèi)容
    hello hadoop
    hello mapreduce
    hello yarn
  3. 回到hadoop-2.8.3文件夾下亮垫,執(zhí)行程序
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar wordcount wcinput wcoutput
  4. 查看結(jié)果

偽分布式運行

啟動HDFS并運行MapReduce程序

  1. 配置
    1.1. 配置hadoop-env.sh
    export JAVA_HOME=/opt/module/jdk1.8.0_181
    1.2. 配置core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-00:9000</value>
</property>

<!-- 指定hadoop運行時產(chǎn)生文件的存儲目錄 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop-2.8.3/data/tmp</value>
</property>

1.3. 配置hdfs-site.xml

    <!-- 指定HDFS副本的數(shù)量 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
  1. 啟動
    2.1. 格式化namenode
    第一次啟動時格式化模软,以后就不要總格式化
    hdfs namenode -format
    2.2. 啟動namenode
    hadoop-daemon.sh start namenode
    2.3. 啟動datanode
    hadoop-daemon.sh start datanode
  2. 查看集群
    3.1. 查看是否啟動成功
    使用jps命令
    hdfs單機是否啟動成功.png

    3.2. 查看產(chǎn)生的log日志
    hadoop-2.8.3/logs下是相關(guān)日志
    hadoop相關(guān)日志.png

    3.3. web端查看hdfs文件系統(tǒng)
    http://hadoop-00:50070/dfshealth.html#tab-overview
  3. 操作集群
    4.1. 在hdfs文件系統(tǒng)上創(chuàng)建一個input文件夾
    hdfs dfs -mkdir -p /user/hadoop/input
    4.2. 將測試文件上傳到文件系統(tǒng)上
    hdfs dfs -put hello.txt /user/hadoop/input
    4.3. 查看上傳文件是否正確
    hdfs dfs -ls /user/hadoop/input
    hdfs dfs -cat /user/hadoop/input/hello.txt
    4.4. 運行mapreduce程序
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar wordcount /user/hadoop/input /user/hadoop/output
    4.5. 查看輸出結(jié)果
    hdfs dfs -ls /user/hadoop/output
    hdfs dfs -cat /user/hadoop/output/part-r-00000
    4.6. 將輸出結(jié)果下載到本地
    hdfs dfs -get /user/hadoop/output output
    4.8 刪除輸出結(jié)果文件夾
    hdfs dfs -rm -r /user/hadoop/output

YARN上運行MapReduce程序

  1. 配置
    1.1. 配置yarn-env.sh
    JAVA_HOME=/opt/module/jdk1.8.0_181
    1.2. 配置yarn-site.xml
<!-- reducer獲取數(shù)據(jù)的方式 -->
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-00</value>
</property>

1.3. 配置mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181
1.4. 配置mapred-site.xml
對mapred-site.xml.template重新命名為mapred-site.xml
cp mapred-site.xml.template mapred-site.xml

<!-- 指定mr運行在yarn上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
  1. 啟動
    2.1. 啟動resourcemanager
    yarn-daemon.sh start resourcemanager
    2.2. 啟動nodemanager
    yarn-daemon.sh start nodemanager
  2. 操作
    3.1. yarn的瀏覽器頁面查看
    http://hadoop-00:8088/cluster
    yarn1.png

    3.2. 執(zhí)行mapreduce程序
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar wordcount /user/hadoop/input /user/hadoop/output
    3.3. 查看運行結(jié)果
    hdfs dfs -ls /user/hadoop/output
    hdfs dfs -cat /user/hadoop/output/part-r-00000
    yarn2.png

配置歷史服務(wù)器

引入歷史服務(wù)器.png

點上圖的history是點不開的,需要配置歷史服務(wù)器

  1. 配置mapred-site.xml
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop-00:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop-00:19888</value>
</property>
  1. 啟動歷史服務(wù)器
    /mr-jobhistory-daemon.sh start historyserver
  2. 查看是否啟動
    使用jps 或者訪問http://hadoop-00:19888/jobhistory

日志的聚集

日志聚集概念:應(yīng)用運行完成以后包警,將日志信息上傳到HDFS系統(tǒng)上撵摆。


jobHistory.png

logs.png

點擊上圖的logs,訪問不到害晦,開啟日志聚集
步驟如下

  1. 配置yarn-site.xml
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留時間設(shè)置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
  1. 把正在運行的相關(guān)進程停止
    yarn-daemon.sh stop resourcemanager
    yarn-daemon.sh stop nodemanager
    hadoop-daemon.sh stop namenode
    hadoop-daemon.sh stop datanode
    mr-jobhistory-daemon.sh stop historyserver
  2. 啟動相關(guān)進程
    hadoop-daemon.sh start namenode
    hadoop-daemon.sh start datanode
    yarn-daemon.sh start resourcemanager
    yarn-daemon.sh start nodemanager
    mr-jobhistory-daemon.sh start historyserver
  3. 刪除已經(jīng)存在的文件并執(zhí)行wordcount案例
    hdfs dfs -rm -r /user/hadoop/output

分布式部署運行

準(zhǔn)備三臺虛擬機特铝,ip,主機名壹瘟,防火墻關(guān)閉鲫剿,安裝好jdk和hadoop

scp命令

scp可以實現(xiàn)服務(wù)器與服務(wù)器之間的數(shù)據(jù)拷貝
具體使用

  1. 將hadoop-100 的/home/hadoop/test 文件復(fù)制到hadoop-101上
    scp -r /home/hadoop/test hadoop@hadoop-101:/home/hadoop
  2. 將服務(wù)器/etc/profile 文件復(fù)制到hadoop-101上
    scp /etc/profile hadoop@hadoop-101:/etc/profile
  3. hadoop-100上實現(xiàn)hadoop-101和hadoop-102的數(shù)據(jù)傳輸
    scp hadoop@hadoop-101:/etc/profile hadoop@hadoop-102:/etc/profile

SSH無密碼登錄

免密登錄原理

免密登錄原理.png

.ssh文件夾下文件功能解釋

  1. known_hosts,記錄ssh訪問過計算機的公鑰(public key)
  2. id_rsa稻轨,生成的私鑰
  3. id_rsa.pub灵莲,生成的公鑰
  4. authorized_keys,存放授權(quán)過得無秘登錄服務(wù)器公鑰

具體步驟

  1. 進入到我的home目錄下的.ssh目錄
    cd ~
    cd .ssh
  2. 生成公鑰和私鑰
    ssh-keygen -t rsa
    敲三個回車殴俱,會生成兩個文件
  3. 將公鑰拷貝到要免密登錄的目標(biāo)服務(wù)器上
    ssh-copy-id hadoop-101
    ssh-copy-id hadoop-102

rsync

rsync遠程同步工具政冻,主要用于備份和鏡像。具有速度快线欲、避免復(fù)制相同內(nèi)容和支持符號鏈接的優(yōu)點明场。
rsync和scp區(qū)別:用rsync做文件的復(fù)制要比scp的速度快,rsync只對差異文件做更新李丰。scp是把所有文件都復(fù)制過去苦锨。

命令安裝

yum -y install rsync

命令解釋

rsync -rvl pdir/fname user@hadoophost:$pdir
命令 命令參數(shù) 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑
選項解釋
-r 遞歸
-v 顯示復(fù)制過程
-l 拷貝符號連接

案例

把本機/opt/tmp目錄同步到hadoop-102服務(wù)器的root用戶下的/opt/tmp目錄
rsync -rvl /opt/tmp root@hadoop-102:/opt

編寫集群分發(fā)腳本xsync

需求分析

循環(huán)復(fù)制文件到所有節(jié)點的相同目錄下。
原始拷貝:rsync -rvl /opt/module root@hadoop103:/opt/
期望腳本:xsync 要同步的文件名稱
在/usr/local/bin這個目錄下存放的腳本趴泌,可以在系統(tǒng)任何地方直接執(zhí)行舟舒。

實現(xiàn)

在hadoop-100上操作

  1. 在/usr/local/bin目錄下創(chuàng)建xsync文件
    vim xsync
  2. 使該文件成可執(zhí)行文件
    chmod 777 xsync
  3. 改變擁有者為hadoop
    chown hadoop:hadoop xsync
  4. 輸入如下內(nèi)容
#!/bin/bash
#1 獲取輸入?yún)?shù)個數(shù),如果沒有參數(shù)嗜憔,直接退出
pcount=$#
if((pcount == 0));then
echo no args;
exit;
fi

#2 獲取文件名稱
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 獲取上級目錄到絕對路徑
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 獲取當(dāng)前用戶名稱
user=`whoami`

#5 循環(huán)
for((host=101;host<103;host++));do
        echo $pdir/$fname $user@hadoop-$host:$pdir
        rsync -rvl $pdir/$fname $user@hadoop-$host:$pdir
done

配置集群

集群部署規(guī)劃

hadoop-100 hadoop-101 hadoop-102
HDFS NameNode DateNode DateNode SecondaryNameNode DateNode
YARN NodeManager ResourceManager NodeManager NodeManager

配置文件修改

  1. core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-100:9000</value>
    </property>

    <!-- 指定hadoop運行時產(chǎn)生文件的存儲目錄 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.8.3/data/tmp</value>
    </property>
  1. hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181
  1. hdfs-site.xml
        <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop-102:50090</value>
         </property>
  1. slaves
hadoop-100
hadoop-101
hadoop-102
  1. yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181
  1. yarn-site.xml
        <!-- reducer獲取數(shù)據(jù)的方式 -->
    <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop101</value>
    </property>
  1. mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181
  1. mapred-site.xml
<!-- 指定mr運行在yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

在集群上分發(fā)以上所有文件

進入etc目錄
xsync hadoop/

查看分發(fā)情況

到hadoop-101 和 hadoop-102
cat slaves

集群啟動及測試

啟動集群

  1. 如果集群是第一次啟動秃励,需要格式化namenode,在namenode上格式化
    /hdfs namenode -format
  2. 啟動hdfs吉捶,在namenode上啟動hdfs
    start-dfs.sh
  3. 啟動yarn夺鲜,在ResourceManager所在的機器啟動yarn
    同樣需要配置ssh無密登錄
    start-yarn.sh

集群基本測試

  1. 上傳文件到集群
    hdfs dfs -mkdir -p /user/hadoop
    上傳小文件
    hdfs dfs -put /home/hadoop/hello.txt /user/hadoop/
    上傳大文件
    hdfs dfs -put hadoop-2.8.3.tar.gz /user/hadoop/
    hdfs dfs -put jdk-8u181-linux-x64.tar.gz /user/hadoop
  2. 上傳文件后文件存放在什么位置
    /opt/module/hadoop-2.8.3/data/tmp/dfs/data/current/BP-922234044-192.168.114.100-1535772143813/current/finalized/subdir0/subdir0
    可以查看下該路徑下一個文件內(nèi)容
    cat blk_1073741825


    路徑及內(nèi)容.png
  3. 對大文件進行拼接
    cat blk_1073741826>>test.file
    cat blk_1073741827>>test.file
    tar -zxvf test.file


    對大文件進行拼接.png
  4. 下載
    hdfs dfs -get /user/hadoop/hadoop-2.8.3.tar.gz hadoop-2.8.3.tar.gz

Hadoop啟動停止方式

  1. 各個服務(wù)組件逐一啟動
    啟動hdfs組件
    hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
    啟動yarn
    yarn-daemon.sh start|stop resourcemanager|nodemanager
  2. 各個模塊分開啟動(配置ssh是前提)
    整體啟動/停止hdfs
    start-dfs.sh
    stop-dfs.sh
    整體啟動/停止yarn
    start-yarn.sh
    stop-yarn.sh
  3. 全部啟動(不建議使用)
    start-all.sh
    stop-all.sh

集群時間同步

時間同步的方式:找一個機器廓鞠,作為時間服務(wù)器,所有的機器與這臺集群時間進行定時的同步谣旁,比如床佳,每隔十分鐘,同步一次時間榄审。

時間服務(wù)器操作步驟

使用root用戶進行如下操作

  1. 檢查ntp是否安裝
    rpm -qa|grep ntp


    是否安裝ntp.png

    沒有安裝的話砌们,執(zhí)行下yum -y install ntp

  2. 修改ntp配置文件
    vi /etc/ntp.conf
    分別做如下修改
    修改1
    #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap為
    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    修改2
    server 0.centos.pool.ntp.org iburst
    server 1.centos.pool.ntp.org iburst
    server 2.centos.pool.ntp.org iburst
    server 3.centos.pool.ntp.org iburst為
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    添加3
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
  3. 修改/etc/sysconfig/ntpd 文件
    vim /etc/sysconfig/ntpd
    添加如下內(nèi)容
    SYNC_HWCLOCK=yes
  4. 啟動ntpd
    service ntpd restart
  5. 執(zhí)行
    chkconfig ntpd on

其他機器配置

必須是root用戶

  1. 在其他機器配置10分鐘與時間服務(wù)器同步一次
    crontab -e
    0-59/10 * * * * /usr/sbin/ntpdate hadoop-100
  2. 修改任意機器時間
    date -s "2018-9-5 11:11:11"
  3. 十分鐘后查看機器是否與時間服務(wù)器同步
    date
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搁进,隨后出現(xiàn)的幾起案子浪感,更是在濱河造成了極大的恐慌,老刑警劉巖饼问,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件影兽,死亡現(xiàn)場離奇詭異,居然都是意外死亡莱革,警方通過查閱死者的電腦和手機峻堰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盅视,“玉大人捐名,你說我怎么就攤上這事∧只鳎” “怎么了镶蹋?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赏半。 經(jīng)常有香客問我贺归,道長,這世上最難降的妖魔是什么断箫? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任拂酣,我火速辦了婚禮,結(jié)果婚禮上瑰枫,老公的妹妹穿的比我還像新娘踱葛。我一直安慰自己丹莲,他們只是感情好光坝,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著甥材,像睡著了一般盯另。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洲赵,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天鸳惯,我揣著相機與錄音商蕴,去河邊找鬼。 笑死芝发,一個胖子當(dāng)著我的面吹牛绪商,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辅鲸,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼格郁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了独悴?” 一聲冷哼從身側(cè)響起例书,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刻炒,沒想到半個月后决采,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡坟奥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年树瞭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爱谁。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡移迫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出管行,到底是詐尸還是另有隱情厨埋,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布捐顷,位于F島的核電站荡陷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏迅涮。R本人自食惡果不足惜废赞,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叮姑。 院中可真熱鬧唉地,春花似錦、人聲如沸传透。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朱盐。三九已至群嗤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兵琳,已是汗流浹背狂秘。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工骇径, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人者春。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓破衔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钱烟。 傳聞我的和親對象是個殘疾皇子运敢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一、系統(tǒng)參數(shù)配置優(yōu)化 1忠售、系統(tǒng)內(nèi)核參數(shù)優(yōu)化配置 修改文件/etc/sysctl.conf传惠,添加如下配置,然后執(zhí)行s...
    張偉科閱讀 3,748評論 0 14
  • 終極算法 關(guān)注微信號每天收聽我們的消息終極算法為您推送精品閱讀 前言 Hadoop 在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)...
    Yespon閱讀 129,860評論 12 168
  • Hadoop逝她、HBase浇坐、Hive、Spark分布式系統(tǒng)架構(gòu)黔宛,本文通過全套部署方法來讓大家深入系統(tǒng)內(nèi)部以充分理解...
    0o失魂魚o0閱讀 2,822評論 0 30
  • 高爾基說過近刘,愛自己的孩子,是連母雞都會做的事臀晃,但是教育好孩子觉渴,卻是一門藝術(shù)。家庭教育是每位家長都應(yīng)重視的課程徽惋,成功...
    胡涂涂tutu閱讀 149評論 0 1
  • ?這需要去照看案淋,哪怕是無法通透的暖,那些恐怖中的思念借著船险绘,無法拋錨踢京,更無法上岸,那是我一個人的秋宦棺,陌生的...
    稍息講一下閱讀 274評論 0 1