Hadoop入門|Hadoop簡介及安裝

一终蒂、 大數(shù)據(jù)簡介

1. 大數(shù)據(jù)的定義

?數(shù)據(jù)是指?法在?定時(shí)間范圍內(nèi)?常規(guī)軟件?具進(jìn)?捕捉散休、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策?、洞察發(fā)現(xiàn)?和流程優(yōu)化能?的海量、?增?率和多樣化的信息資產(chǎn)扳炬。

2. 大數(shù)據(jù)的特點(diǎn)

?數(shù)據(jù)的特點(diǎn)可以? IBM 曾經(jīng)提出的 “5V” 來描述,如下:

  • 大量

    采集、存儲和計(jì)算的數(shù)據(jù)量都?常?虽填。大數(shù)據(jù)領(lǐng)域數(shù)據(jù)量基本上以PB為最小單位,而PB級數(shù)據(jù)量有多?曹动?是怎樣的?個(gè)概念斋日?

    假如?機(jī)播放MP3的速度為平均每分鐘1MB,?1?歌曲的平均時(shí)?為4分鐘墓陈,那么1PB存量的歌 曲可以連續(xù)播放2000年恶守。

    1PB 也相當(dāng)于50%的全美學(xué)術(shù)研究圖書館藏書咨詢內(nèi)容。

    基于IDC的報(bào)告預(yù)測贡必,從2013年到2020年兔港,全球數(shù)據(jù)量會從4.4ZB猛增到44ZB!?到了2025 年仔拟,全球會有163ZB的數(shù)據(jù)量衫樊!根據(jù)存儲單位換算,1ZB = 1024 * 1024PB理逊,所以全球的數(shù)據(jù)量已經(jīng)?到爆了橡伞!?傳統(tǒng)的關(guān)系型數(shù)據(jù)庫根本處理不了如此海量的數(shù)據(jù)!

  • 高速

    在?數(shù)據(jù)時(shí)代晋被,數(shù)據(jù)的創(chuàng)建兑徘、存儲、分析都要求被?速處理羡洛,?如電商?站的個(gè)性化推薦盡可能要 求實(shí)時(shí)完成推薦挂脑,這也是?數(shù)據(jù)區(qū)別于傳統(tǒng)數(shù)據(jù)挖掘的顯著特征。

  • 多樣

    數(shù)據(jù)形式和來源多樣化欲侮。包括結(jié)構(gòu)化崭闲、半結(jié)構(gòu)化和?結(jié)構(gòu)化數(shù)據(jù),具體表現(xiàn)為?絡(luò)?志威蕉、?頻刁俭、視頻、圖?韧涨、地理位置信息等等牍戚,多類型的數(shù)據(jù)對數(shù)據(jù)的處理能?提出了更?的要求侮繁。

  • 真實(shí)

    確保數(shù)據(jù)的真實(shí)性,才能保證數(shù)據(jù)分析的正確性

  • 低價(jià)值

    數(shù)據(jù)價(jià)值密度相對較低如孝,或者說是浪?淘沙卻?彌?珍貴宪哩。互聯(lián)?發(fā)展催?了?量數(shù)據(jù)第晰,信息海 量锁孟,但價(jià)值密度較低,如何結(jié)合業(yè)務(wù)邏輯并通過強(qiáng)?的機(jī)器算法來挖掘數(shù)據(jù)價(jià)值茁瘦,是?數(shù)據(jù)時(shí)代最 需要解決的問題品抽,也是?個(gè)有難度的課題。

3. 大數(shù)據(jù)的應(yīng)用場景

隨著?數(shù)據(jù)的發(fā)展腹躁,?數(shù)據(jù)技術(shù)已經(jīng)?泛應(yīng)?在眾多?業(yè)桑包,?如倉儲物流、電商零售纺非、汽?哑了、電信、?物醫(yī)學(xué)烧颖、??智能弱左、智慧城市等等領(lǐng)域,包括在疫情防控戰(zhàn)中炕淮,?數(shù)據(jù)技術(shù)也發(fā)揮了重要的作?拆火。

  • 倉儲物流
  • 電商零售
  • 個(gè)性推薦
  • “雙十一購物節(jié)”實(shí)時(shí)銷售額大屏
  • 汽車無人駕駛領(lǐng)域
  • 電信
  • 生物醫(yī)學(xué)
  • 人工智能
  • 智慧城市

二、 Hadoop簡介

1. 什么是Hadoop

Hadoop 是?個(gè)適合?數(shù)據(jù)的分布式存儲和計(jì)算平臺涂圆。

從狹義上講: Hadoop 就是一個(gè)框架平臺们镜,它包括以下三部分:

  • HDFS:分布式文件系統(tǒng)

  • Map Reduce:分布式離線計(jì)算框架。負(fù)責(zé)計(jì)算

  • Yarn:分布式資源調(diào)度框架润歉,負(fù)責(zé)資源調(diào)度

由此我們可以得出模狭,狹義上的Hadoop解決的是海量數(shù)據(jù)的存儲和離線計(jì)算

從廣義上講: Hadoop不僅僅包括狹義上的內(nèi)容,還包括其他輔助框架踩衩,實(shí)際上指的是一個(gè)大數(shù)據(jù)生態(tài)圈,例如:

  • Flume:日志數(shù)據(jù)采集
  • Sqoop:關(guān)系型數(shù)據(jù)庫數(shù)據(jù)采集(ETL工具
  • Hive:數(shù)據(jù)倉庫工具
  • Kafka:高吞吐消息中間件
  • HBase:海量列式非關(guān)系型數(shù)據(jù)庫

2. Hadoop的特點(diǎn)

3. Hadoop的發(fā)行版本

?前Hadoop發(fā)?版?常多嚼鹉,在企業(yè)中主要?到的三個(gè)版本分別是:Apache Hadoop版本(最原始的,所有發(fā)?版均基于這個(gè)版 本進(jìn)?改進(jìn))驱富、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop锚赤,簡稱“CDH”)、 Hortonworks版本(Hortonworks Data Platform褐鸥,簡稱“HDP”)线脚。

  • Apache Hadoop 原始版本

    官?地址:http://hadoop.apache.org/

    優(yōu)點(diǎn):擁有全世界的開源貢獻(xiàn),代碼更新版本?較快

    缺點(diǎn):版本的升級,版本的維護(hù)酒贬,以及版本之間的兼容性又憨,學(xué)習(xí)?常?便

    Apache所有軟件的下載地址(包括各種歷史版本):http://archive.apache.org/dist/

  • 軟件收費(fèi)版本ClouderaManager CDH版本 --?產(chǎn)環(huán)境使?

    官?地址:https://www.cloudera.com/

    Cloudera主要是美國?家?數(shù)據(jù)公司在Apache開源Hadoop的版本上翠霍,通過??公司內(nèi)部的各種 補(bǔ)丁锭吨,實(shí)現(xiàn)版本之間的穩(wěn)定運(yùn)?,?數(shù)據(jù)?態(tài)圈的各個(gè)版本的軟件都提供了對應(yīng)的版本寒匙,解決了版 本的升級困難零如,版本兼容性等各種問題,?產(chǎn)環(huán)境強(qiáng)烈推薦使?

  • 免費(fèi)開源版本HortonWorks HDP版本--?產(chǎn)環(huán)境使?

    官?地址:https://hortonworks.com/

    Hortonworks主要是雅?主導(dǎo)Hadoop開發(fā)的副總裁锄弱,帶領(lǐng) ???個(gè)核?成員成?Hortonworks考蕾,核?產(chǎn)品軟件HDP(ambari),HDF免費(fèi)開源会宪,并且提供 ?整套的web管理界?肖卧,供我們可以通過web界?管理我們的集群狀態(tài)

    web管理界?軟件HDF? 址(http://ambari.apache.org/

4. Apache Hadoop版本更迭

0.x 系列版本:Hadoop當(dāng)中最早的?個(gè)開源版本,在此基礎(chǔ)上演變?來的1.x以及2.x的版本

1.x 版本系列:Hadoop版本當(dāng)中的第?代開源版本掸鹅,主要修復(fù)0.x版本的?些bug等

2.x 版本系列:架構(gòu)產(chǎn)?重?變化塞帐,引?了yarn平臺等許多新特性

3.x 版本系列:EC技術(shù)、YARN的時(shí)間軸服務(wù)等新特性

5. Hadoop的優(yōu)缺點(diǎn)

Hadoop的優(yōu)點(diǎn)

  • Hadoop具有存儲和處理數(shù)據(jù)能?的?可靠性巍沙。
  • Hadoop通過可?的計(jì)算機(jī)集群分配數(shù)據(jù)葵姥,完成存儲和計(jì)算任務(wù),這些集群可以?便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中句携,具有?擴(kuò)展性榔幸。
  • Hadoop能夠在節(jié)點(diǎn)之間進(jìn)?動態(tài)地移動數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)的動態(tài)平衡矮嫉,處理速度?诚髋兀快,具有?效性蠢笋。
  • Hadoop能夠?動保存數(shù)據(jù)的多個(gè)副本拨齐,并且能夠?動將失敗的任務(wù)重新分配,具有?容錯(cuò)性挺尿。

Hadoop的缺點(diǎn)

  • Hadoop不適?于低延遲數(shù)據(jù)訪問奏黑。
  • Hadoop不能?效存儲?量??件。
  • Hadoop不?持多?戶寫?并任意修改?件编矾。

6. Apache Hadoop的重要組成

Hadoop=HDFS(分布式?件系統(tǒng))+MapReduce(分布式計(jì)算框架)+Yarn(資源協(xié)調(diào)框架)+Common模塊

6.1 HDFS

  • Hadoop Distribute File System熟史,?個(gè)?可靠、?吞吐量的分布式?件系統(tǒng)

  • 分而治之思想窄俏,數(shù)據(jù)切割蹂匹、制作副本、分散儲存

圖中涉及到的角色:

  • NameNode(nn): 存儲?件的元數(shù)據(jù)凹蜈,?如?件名限寞、?件?錄結(jié)構(gòu)忍啸、?件屬性(?成時(shí)間、副本 數(shù)履植、?件權(quán)限)计雌,以及每個(gè)?件的塊列表和塊所在的DataNode等。
  • **SecondaryNameNode(2nn): **輔助NameNode更好的?作玫霎,?來監(jiān)控HDFS狀態(tài)的輔助后臺程 序凿滤,每隔?段時(shí)間獲取HDFS元數(shù)據(jù)快照。
  • DataNode(dn): 在本地?件系統(tǒng)存儲?件塊數(shù)據(jù)庶近,以及塊數(shù)據(jù)的校驗(yàn)

注: NN翁脆,2NN,DN這些既是??名稱,進(jìn)程名稱鼻种,代指電腦節(jié)點(diǎn)名稱反番!

6.2 MapReduce

MapReduce計(jì)算 = Map階段 + Reduce階段

  • Map階段就是“分”的階段,負(fù)責(zé)并行處理輸入數(shù)據(jù)

  • Reduce階段就是“合”的階段叉钥,對Map階段結(jié)果進(jìn)行匯總


從圖中我們可以看出罢缸,MapReduce就是一個(gè)分布式的離線計(jì)算框架,將一個(gè)任務(wù)進(jìn)行拆解沼侣,分散處理祖能,最終匯總結(jié)果,做到一臺機(jī)器處理不了蛾洛,那就將任務(wù)拆解成多個(gè)任務(wù)养铸,利用多臺機(jī)器進(jìn)行處理,最終匯總各臺機(jī)器的處理結(jié)果轧膘。

6.3 Yarn

作業(yè)調(diào)度與集群資源管理的框架


圖中涉及到的角色:

  • ResourceManager(rm): 處理客戶端請求钞螟、啟動/監(jiān)控ApplicationMaster、監(jiān)控NodeManager谎碍、資 源分配與調(diào)度鳞滨;
  • NodeManager(nm): 單個(gè)節(jié)點(diǎn)上的資源管理、處理來?ResourceManager的命令蟆淀、處理來? ApplicationMaster的命令拯啦;
  • ApplicationMaster(am): 數(shù)據(jù)切分、為應(yīng)?程序申請資源熔任,并分配給內(nèi)部任務(wù)褒链、任務(wù)監(jiān)控與容錯(cuò)。
  • Container: 對任務(wù)運(yùn)?環(huán)境的抽象疑苔,封裝了CPU甫匹、內(nèi)存等多維資源以及環(huán)境變量、啟動命令等任務(wù)運(yùn) ?相關(guān)的信息。
  • ResourceManager是??兵迅,NodeManager是?弟抢韭,ApplicationMaster是計(jì)算任務(wù)專員。

注: 和HDFS一樣恍箭,這些角色既是??名稱刻恭,進(jìn)程名稱,也代指電腦節(jié)點(diǎn)名稱季惯!

6.4 Common

?持其他模塊的?具模塊(Configuration吠各、RPC、序列化機(jī)制勉抓、?志操作)

三、 Hadoop集群搭建

  • 軟件和操作系統(tǒng)版本

    • Hadoop框架是采?Java語?編寫候学,需要java環(huán)境(jvm)
    • JDK版本:JDK8版本
  • Hadoop搭建方式

    • 單機(jī)模式:單節(jié)點(diǎn)模式藕筋,?集群,?產(chǎn)不會使?這種?式
    • 單機(jī)偽分布式模式:單節(jié)點(diǎn)梳码,多線程模擬集群的效果隐圾,?產(chǎn)不會使?這種?式
    • 完全分布式模式:多臺節(jié)點(diǎn),真正的分布式Hadoop集群的搭建(?產(chǎn)環(huán)境建議使?這種?式)

1. 虛擬機(jī)環(huán)境準(zhǔn)備

  • 三臺虛擬機(jī)(靜態(tài)IP掰茶,關(guān)閉防?墻暇藏,修改主機(jī)名,配置免密登錄濒蒋,集群時(shí)間同步)

  • 在/opt?錄下創(chuàng)建?件夾

    # 軟件安裝包存放?錄
    mkdir -p /opt/lagou/software
    
    # 軟件安裝?錄
    mkdir -p /opt/lagou/servers
    
  • Hadoop下載地址:

    https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/
    

    Hadoop官?地址:

    http://hadoop.apache.org/
    

2. 集群規(guī)劃

框架 linux121 linux122 linux123
HDFS NameNode盐碱、DataNode DataNode SecondaryNameNode、DataNode
YARN NodeManager NodeManager NodeManager沪伙、ResourceManager

3. 安裝Hadoop

  1. 登錄linux121節(jié)點(diǎn)瓮顽;進(jìn)?/opt/lagou/software,解壓安裝?件到/opt/lagou/servers

    tar -zxvf hadoop-2.9.2.tar.gz -C /opt/lagou/servers
    
  2. 添加Hadoop到環(huán)境變量 vim /etc/profile

    # HADOOP_HOME
    export HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
  3. 使環(huán)境變量?效

    source /etc/profile
    
  4. 驗(yàn)證hadoop

    hadoop version
    

    校驗(yàn)結(jié)果:


  1. hadoop?錄


    上圖中標(biāo)注的目錄解釋:

    1:bin?錄:對Hadoop進(jìn)?操作的相關(guān)命令,如hadoop,hdfs等

    2:etc?錄:Hadoop的配置?件?錄围橡,?hdfs-site.xml,core-site.xml等

    3:lib?錄:Hadoop本地庫(解壓縮的依賴)

    4:sbin?錄:存放的是Hadoop集群啟動停?相關(guān)腳本暖混,命令

    5:share?錄:Hadoop的?些jar,官?案例jar,?檔等

4. 集群配置

Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置

  • HDFS集群配置

    1. 將JDK路徑明確配置給HDFS(修改hadoop-env.sh)
    2. 指定NameNode節(jié)點(diǎn)以及數(shù)據(jù)存儲?錄(修改core-site.xml)
    3. 指定SecondaryNameNode節(jié)點(diǎn)(修改hdfs-site.xml)
    4. 指定DataNode從節(jié)點(diǎn)(修改etc/hadoop/slaves?件翁授,每個(gè)節(jié)點(diǎn)配置信息占??)
  • MapReduce集群配置

    1. 將JDK路徑明確配置給MapReduce(修改mapred-env.sh)
    2. 指定MapReduce計(jì)算框架運(yùn)?Yarn資源調(diào)度框架(修改mapred-site.xml)
  • Yarn集群配置

    1. 將JDK路徑明確配置給Yarn(修改yarn-env.sh)
    2. 指定ResourceManager??節(jié)點(diǎn)所在計(jì)算機(jī)節(jié)點(diǎn)(修改yarn-site.xml)
    3. 指定NodeManager節(jié)點(diǎn)(會通過slaves?件內(nèi)容確定)

4.1 HDFS集群配置

  • 進(jìn)入配置文件目錄
    cd /opt/lagou/servers/hadoop-2.9.2/etc/hadoop
    
  1. 配置:hadoop-env.sh
    將JDK路徑明確配置給HDFS

    vim hadoop-env.sh
    
    # 增加以下內(nèi)容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
    
  2. 指定NameNode節(jié)點(diǎn)以及數(shù)據(jù)存儲?錄(修改core-site.xml)
    官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/core-default.xml
    官方默認(rèn)hdfs的RPC端口號是 8020拣播,這里改為9000

    vim core-site.xml
    
    # 增加以下內(nèi)容
    <!-- 指定HDFS中NameNode的地址 -->
    <property>
         <name>fs.defaultFS</name>
         <value>hdfs://linux121:9000</value>
    </property>
    <!-- 指定Hadoop運(yùn)?時(shí)產(chǎn)??件的存儲?錄 --><property>
         <name>hadoop.tmp.dir</name>
         <value>/opt/lagou/servers/hadoop-2.9.2/data/tmp</value>
    </property>
    
  3. 指定secondarynamenode節(jié)點(diǎn)(修改hdfs-site.xml)
    官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

    vim hdfs-site.xml
    # 增加以下內(nèi)容
    <!-- 指定Hadoop輔助名稱節(jié)點(diǎn)主機(jī)配置 -->
    <property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>linux123:50090</value>
    </property>
    <!--副本數(shù)量 -->
    <property>
         <name>dfs.replication</name>
         <value>3</value>
    </property>
    
  4. 指定datanode從節(jié)點(diǎn)(修改slaves?件,每個(gè)節(jié)點(diǎn)配置信息占??)

    vim slaves
    # 增加以下內(nèi)容
    linux121
    linux122
    linux123
    

    注:該?件中添加的內(nèi)容結(jié)尾不允許有空格收擦,?件中不允許有空?

4.2 MapReduce集群配置

  1. 指定MapReduce使?的jdk路徑(修改mapred-env.sh)
    vim mapred-env.sh
    
    # 增加以下內(nèi)容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
    
  2. 指定MapReduce計(jì)算框架運(yùn)?Yarn資源調(diào)度框架(修改mapred-site.xml)
    官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
    # 復(fù)制一份mapred-site.xml.template并改名為mapred-site.xml
    cp mapred-site.xml.template mapred-site.xml
    
    # 修改mapred-site.xml
    vim mapred-site.xml
    
    # 增加以下內(nèi)容
    <!-- 指定MR運(yùn)?在Yarn上 -->
    <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
    </property>
    

4.3 Yarn集群配置

  1. 指定JDK路徑
    vim yarn-env.sh
    # 增加以下內(nèi)容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
    
  2. 指定ResourceMnager的master節(jié)點(diǎn)信息(修改yarn-site.xml)
    官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
    vim yarn-site.xml
    
    # 增加以下內(nèi)容
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
         <name>yarn.resourcemanager.hostname</name>
         <value>linux123</value>
    </property>
    <!-- Reducer獲取數(shù)據(jù)的?式 -->
    <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
    </property>
    
  3. 指定NodeManager節(jié)點(diǎn)
    在HDFS配置時(shí)已經(jīng)配置了slaves?件贮配,此時(shí)無需配置

注意:
Hadoop安裝?錄所屬?戶和所屬?戶組信息,默認(rèn)是501 dialout炬守,?我們操作Hadoop集群的?戶使?的是虛擬機(jī)的root?戶牧嫉,所以為了避免出現(xiàn)信息混亂,修改Hadoop安裝?錄所屬?戶和?戶組!酣藻!

chown -R root:root /opt/lagou/servers/hadoop-2.9.2

4.4 分發(fā)配置

4.4.1 rsync 遠(yuǎn)程同步?具

  • rsync主要?于備份和鏡像曹洽。具有速度快、避免復(fù)制相同內(nèi)容和?持符號鏈接的優(yōu)點(diǎn)辽剧。

  • rsync和scp區(qū)別:

    • rsync做?件的復(fù)制要?scp的速度快

    • rsync只對差異?件做更新送淆。scp是把所有? 件都復(fù)制過去

  • rsync基本語法

  • rsync -rvl $pdir/$fname $user@$host:$pdir/$fname

  • 命令 選項(xiàng)參數(shù) 要拷?的?件路徑/名稱 ?的?戶@主機(jī):?的路徑/名稱

  • 選項(xiàng)參數(shù)說明

    1. -r :遞歸
    2. -v:顯示復(fù)制過程
    3. -l:拷?符號連接
  • rsync案例

    1. 三臺虛擬機(jī)安裝rsync (執(zhí)?安裝需要保證機(jī)器聯(lián)?)

       yum install -y rsync
      
    2. 把linux121機(jī)器上的/opt/lagou/software?錄同步到linux122服務(wù)器的root?戶下的/opt/?錄

      rsync -rvl /opt/lagou/software/root@linux122:/opt/lagou/software
      

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

  1. 需求:循環(huán)復(fù)制?件到集群所有節(jié)點(diǎn)的相同?錄下

    rsync命令原始拷?:rsync -rvl /opt/module root@linux123:/opt/

  2. 期望腳本:腳本+要同步的?件名稱

  3. 說明:在/usr/local/bin這個(gè)?錄下存放的腳本,root?戶可以在系統(tǒng)任何地?直接執(zhí)?怕轿。

  4. 腳本實(shí)現(xiàn)

    • 在/usr/local/bin?錄下創(chuàng)建?件rsync-script

      touch rsync-script

    • 在?件中編寫shell代碼vim rsync-script

      #!/bin/bash
      
      #1 獲取命令輸?參數(shù)的個(gè)數(shù)偷崩,如果個(gè)數(shù)為0,直接退出命令
      paramnum=$#
      if((paramnum==0)); then
      echo no params;
      exit;
      fi
      
      #2 根據(jù)傳?參數(shù)獲取?件名稱
      p1=$1
      file_name=`basename $p1`
      echo fname=$file_name
      
      #3 獲取輸?參數(shù)的絕對路徑
      pdir=`cd -P $(dirname $p1); pwd`
      echo pdir=$pdir
      
      #4 獲取?戶名稱
      user=`whoami`
      
      #5 循環(huán)執(zhí)?rsync
      for((host=121; host<124; host++)); do
      echo ------------------- linux$host --------------
       rsync -rvl $pdir/$file_name $user@linux$host:$pdir
      done
      

      命令細(xì)節(jié)說明:

      • basename 命令可取得文件的文件名撞羽,如:
        basename /usr/local/bin/rsync-script阐斜,則結(jié)果是rsync-script
      • dirname 命令可取得文件所在目錄,如:
        dirname /usr/local/bin/rsync-script 诀紊,則結(jié)果是/usr/local/bin
      • 在腳本文件中要用 這對符號 ```` 獲取命令的結(jié)果谒出,然后才能賦值給變量 ,如:
        file_name=`basename $p1`
        
      • 在以下腳本中邻奠,如果拷貝文件的時(shí)候笤喳,文件名不帶路徑,那么 dirname 命令得到的結(jié)果是 . 碌宴,表示當(dāng)前目錄杀狡。可以在此命令基礎(chǔ)上再加一條命令:cd -P 贰镣,表示進(jìn)入物理路徑呜象,如:cd -P . ,此時(shí)會進(jìn)入該目錄中八孝,然后通過 pwd 打印出當(dāng)前目錄董朝,即可獲得該文件所在目錄的路徑,以下是一個(gè)例子:
        pdir=`cd -P $(dirname $p1); pwd`
        
  5. 修改腳本 rsync-script 的執(zhí)行權(quán)限

    chmod 777 rsync-script
    
  6. 調(diào)?腳本形式:rsync-script ?件名稱

    rsync-script /usr/local/bin/rsync-script
    
  7. 調(diào)?腳本分發(fā)Hadoop安裝?錄到其它節(jié)點(diǎn)

    rsync-script /opt/lagou/servers/hadoop-2.9.2
    

5. 啟動集群

注意: 如果集群是第?次啟動干跛,需要在Namenode所在節(jié)點(diǎn)格式化NameNode子姜,?第?次不?執(zhí)?格 式化Namenode操作!楼入!

  • 格式化命令:
    hadoop namenode -format
    
  • 格式化命令執(zhí)?效果


  • 格式化后創(chuàng)建的?件:/opt/lagou/servers/hadoop-2.9.2/data/tmp/dfs/name/current

5.1 單節(jié)點(diǎn)啟動

  1. 在linux121上啟動NameNode
    [root@linux121 hadoop-2.9.2]$ hadoop-daemon.sh start namenode
    [root@linux121 hadoop-2.9.2]$ jps
    3461 NameNode
    3608 Jps
    
  2. 在linux121哥捕、linux122以及l(fā)inux123上分別啟動DataNode
    [root@linux121 hadoop-2.9.2]$ hadoop-daemon.sh start datanode
    [root@linux121 hadoop-2.9.2]$ jps
    3461 NameNode
    3608 Jps
    3561 DataNode
    
    [root@linux122 hadoop-2.9.2]$ hadoop-daemon.sh start datanode
    [root@linux122 hadoop-2.9.2]$ jps
    3190 DataNode
    3279 Jps
    
    [root@linux123 hadoop-2.9.2]$ hadoop-daemon.sh start datanode
    [root@linux123 hadoop-2.9.2]$ jps
    3237 Jps
    3163 DataNode
    
  3. web端查看Hdfs界?


查看HDFS集群正常節(jié)點(diǎn):


  1. Yarn集群單節(jié)點(diǎn)啟動
    [root@linux123 servers]# yarn-daemon.sh start resourcemanager
    [root@linux123 servers]# yarn-daemon.sh start nodemanager
    [root@linux123 servers]# jps
    7881 ResourceManager
    8166 NodeManager8094 Jps
    
    [root@linux122 servers]# yarn-daemon.sh start nodemanager
    [root@linux122 servers]# jps
    8166 NodeManager
    8223 Jps
    
    [root@linux121 servers]# yarn-daemon.sh start nodemanager
    [root@linux121 servers]# jps
    8166 NodeManager
    8223 Jps
    

5.2 集群群起

  1. 啟動HDFS

    [root@linux121 hadoop-2.9.2]$ sbin/start-dfs.sh
    [root@linux121 hadoop-2.9.2]$ jps
    4166 NameNode
    4482 Jps
    4263 DataNode
    
    [root@linux122 hadoop-2.9.2]$ jps
    3218 DataNode
    3288 Jps
    
    [root@linux123 hadoop-2.9.2]$ jps
    3221 DataNode
    3283 SecondaryNameNode
    3364 Jps
    
  2. 啟動YARN

    [root@linux122 hadoop-2.9.2]$ sbin/start-yarn.sh
    

注意:

  1. HDFS啟動腳本應(yīng)該在NameNode上執(zhí)行
  2. YARN啟動腳本應(yīng)該在ResouceManager上執(zhí)行
  3. 集群群起要以配置ssh為前提,否則無法群起

5.3 Hadoop集群啟動停?命令匯總

  1. 分別啟動/停?HDFS組件

    hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
    
  2. 啟動/停?YARN

    yarn-daemon.sh start / stop resourcemanager / nodemanager
    
  3. 整體啟動/停?HDFS—>常用

    start-dfs.sh / stop-dfs.sh
    
  4. 整體啟動/停?YARN—>常用

    start-yarn.sh / stop-yarn.sh
    

6. 集群測試

  1. HDFS 分布式存儲初體驗(yàn)

    # 從linux本地?件系統(tǒng)上傳下載?件驗(yàn)證HDFS集群?作正常
    
    # 在hdfs創(chuàng)建一個(gè)目錄
    hdfs dfs -mkdir -p /test/input
    
    #本地hoome?錄創(chuàng)建?個(gè)?件
    cd /root
    vim test.txt
    hello hdfs
    
    #上傳linxu?件到Hdfs
    hdfs dfs -put /root/test.txt /test/input
    
    #從Hdfs下載?件到linux本地
    hdfs dfs -get /test/input/test.txt
    
  2. MapReduce 分布式計(jì)算初體驗(yàn)

    # 在HDFS?件系統(tǒng)根?錄下?創(chuàng)建?個(gè)wcinput?件夾
    hdfs dfs -mkdir /wcinput
    
    # 在/root/?錄下創(chuàng)建?個(gè)wc.txt?件(本地?件系統(tǒng))
    cd /root/
    touch wc.txt
    # 編輯wc.txt?件
    vim wc.txt
    
    # 在?件中輸?如下內(nèi)容
    hadoop mapreduce yarn
    hdfs hadoop mapreduce
    mapreduce yarn lagou
    lagou
    lagou
    
    # 上傳wc.txt到Hdfs?錄/wcinput下
    hdfs dfs -put wc.txt /wcinput
    
    # 回到Hadoop?錄/opt/lagou/servers/hadoop-2.9.2
    cd /opt/lagou/servers/hadoop-2.9.2
    
    # 執(zhí)?程序
     hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput 
    
    # 查看結(jié)果
    hdfs dfs -cat /wcoutput/part-r-00000
    # 結(jié)果如下
    hadoop 2
    hdfs 1
    lagou 3
    mapreduce 3
    yarn 2
    

7. 配置歷史服務(wù)器

在Yarn中運(yùn)?的任務(wù)產(chǎn)?的?志數(shù)據(jù)不能查看嘉熊,為了查看程序的歷史運(yùn)?情況遥赚,需要配置?下歷史?志 服務(wù)器。具體配置步驟如下:

  1. 配置mapred-site.xml
    vim mapred-site.xml
    
    # 增加以下內(nèi)容
    <!-- 歷史服務(wù)器端地址 -->
    <property>
         <name>mapreduce.jobhistory.address</name>
         <value>linux121:10020</value>
    </property>
    <!-- 歷史服務(wù)器web端地址 -->
    <property>
         <name>mapreduce.jobhistory.webapp.address</name>
         <value>linux121:19888</value>
    </property>
    
  2. 分發(fā)mapred-site.xml到其它節(jié)點(diǎn)
    rsync-script mapred-site.xml
    
  3. 啟動歷史服務(wù)器
    sbin/mr-jobhistory-daemon.sh start historyserver
    
  4. 查看歷史服務(wù)器是否啟動
    jps
    
  5. 查看JobHistory
    http://linux121:19888/jobhistory
    

8. 配置?志的聚集

  • ?志聚集:應(yīng)?(Job)運(yùn)?完成以后阐肤,將應(yīng)?運(yùn)??志信息從各個(gè)task匯總上傳到HDFS系統(tǒng)上凫佛。
  • ?志聚集功能好處:可以?便的查看到程序運(yùn)?詳情讲坎,?便開發(fā)調(diào)試。

注意: 開啟?志聚集功能愧薛,需要重新啟動NodeManager 晨炕、ResourceManager和HistoryManager。

開啟?志聚集功能具體步驟如下:

  1. 配置yarn-site.xml
    vim yarn-site.xml
    
    # 增加以下內(nèi)容
    <!-- ?志聚集功能使能 -->
    <property> 
         <name>yarn.log-aggregation-enable</name>
         <value>true</value>
    </property>
    <!-- ?志保留時(shí)間設(shè)置7天 -->
    <property>
         <name>yarn.log-aggregation.retain-seconds</name>
         <value>604800</value>
    </property>
    
  2. 分發(fā)yarn-site.xml到集群其它節(jié)點(diǎn)
    rsync-script yarn-site.xml
    
  3. 關(guān)閉NodeManager 毫炉、ResourceManager和HistoryManager
    [root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh stop resourcemanager
    [root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh stop nodemanager
    [root@linux121 hadoop-2.9.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
    
  4. 啟動NodeManager 瓮栗、ResourceManager和HistoryManager
    [root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh start resourcemanager
    [root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh start nodemanager
    [root@linux121 hadoop-2.9.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
    
  5. 刪除HDFS上已經(jīng)存在的輸出?件
    bin/hdfs dfs -rm -R /wcoutput
    
  6. 執(zhí)?WordCount程序
    hadoop jar share/hadoop/mapreduce/hadoopmapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput
    
  7. 查看?志,如圖所示
    地址:http://linux121:19888/jobhistory

對大數(shù)據(jù)感興趣的小伙伴可以關(guān)注我的公眾號:大數(shù)據(jù)學(xué)習(xí)寶典瞄勾,在上面會定期更新學(xué)習(xí)筆記和一些心得费奸!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市进陡,隨后出現(xiàn)的幾起案子愿阐,更是在濱河造成了極大的恐慌,老刑警劉巖四濒,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件换况,死亡現(xiàn)場離奇詭異,居然都是意外死亡盗蟆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門舒裤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喳资,“玉大人,你說我怎么就攤上這事腾供∑偷耍” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵伴鳖,是天一觀的道長节值。 經(jīng)常有香客問我,道長榜聂,這世上最難降的妖魔是什么搞疗? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮须肆,結(jié)果婚禮上匿乃,老公的妹妹穿的比我還像新娘。我一直安慰自己豌汇,他們只是感情好幢炸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拒贱,像睡著了一般宛徊。 火紅的嫁衣襯著肌膚如雪佛嬉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天闸天,我揣著相機(jī)與錄音暖呕,去河邊找鬼。 笑死号枕,一個(gè)胖子當(dāng)著我的面吹牛缰揪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播葱淳,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼钝腺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赞厕?” 一聲冷哼從身側(cè)響起艳狐,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎皿桑,沒想到半個(gè)月后毫目,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诲侮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年镀虐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沟绪。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刮便,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绽慈,到底是詐尸還是另有隱情恨旱,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布坝疼,位于F島的核電站搜贤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钝凶。R本人自食惡果不足惜仪芒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腿椎。 院中可真熱鬧桌硫,春花似錦、人聲如沸啃炸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽南用。三九已至膀钠,卻和暖如春掏湾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肿嘲。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工融击, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雳窟。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓尊浪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親封救。 傳聞我的和親對象是個(gè)殘疾皇子拇涤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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