天天看點

大資料企業學習篇02_1------hadoop初識

一.Hadoop 2.x概述

1.hadoop的來源

Hadoop的産生主要來源于Google的三篇論文,如下:

GFS ——-> HDFS

MapReduce ————>MapReduce

BigTable ———–>Hbase

2.hadoop是什麼

簡言之,Hadoop是大規模資料處理,主要是存儲、計算、資源排程等功能。http://hadoop.apache.org

3.Hadoop的組成

Common:為其他Hadoop子產品提供服務

HDFS:分布式檔案系統,用于存儲海量資料,主要特點是分布式(多主機存儲)、安全性(副本資料,一般是3個副本),資料以block形式存儲,資料塊大小預設是128M

MapReduce:一個分布式的離線計算架構,對海量資料進行處理,主要思想是分而治之,将大資料集拆分成小的資料集,然後對每個資料集進行邏輯業務處理(map),合并統計資料結果(reduce)

Yarn:一個分布式資源管理和任務排程架構,例如管理整個叢集資源(cpu數,記憶體)、配置設定排程叢集的資源

4.HDFS系統架構圖

大資料企業學習篇02_1------hadoop初識

hdfs是以主-從節點運作。

namenode:主節點,存放中繼資料資訊,比如檔案名、檔案的目錄結構、檔案屬性、每個檔案塊清單以及塊所在的datanode等。**注意:**namenode的中繼資料一部分存放在記憶體中,一部分在磁盤上(例如:fsimage(鏡像檔案)和edits(編輯日志))

datanode:從節點,存放的是資料塊以及資料塊的校驗和

Secondary NameNode: 用來監控HDFS狀态的輔助背景程式,每隔一段時間擷取HDFS中繼資料的快照

5.Yarn架構圖

大資料企業學習篇02_1------hadoop初識

ResourceManager:處理用戶端請求;啟動/監控ApplicationMaster;監控NodeManager;資源配置設定與排程

ApplicationMaster:資料切分;為應用程式申請資源,并配置設定給内部任務;任務監控與容錯

NodeManager:單個節點上的資源管理;處理來自ResourceManager的指令;處理來自ApplicationMaster的指令

Container:對任務運作環境的抽象,封裝了CPU、記憶體等多元資源以及環境變量、啟動指令等任務運作相關的資訊

6.離線計算架構MapReduce

1)将計算過程分為兩個階段,map階段和reduce階段

map:并行處理輸入資料(分)

reduce:對map結果進行合并(合)

2)shuffle連接配接map和reduce階段

map task将資料寫到本地磁盤

reduce task從每個task上讀取一份資料

3)僅适合離線批處理

具有很好的容錯性和擴充性

适合簡單的批處理任務

4)缺點明顯

啟動開銷大、過多使用磁盤導緻效率較低

7.MapReduce on Yarn

大資料企業學習篇02_1------hadoop初識

1)client送出application給RM

2)RM為application找到一個NM,在其container中啟動APP master

3)App master向RM注冊

4)App master向RM申請application所需資源

5)App master通知NM啟動container,将相應資源放入container中

6)NM啟動Map或者Reduce任務

7)NM像APP master反應map或者reduce任務的狀态或者進度

8)App master告知RM任務完成了,可以銷毀了

二.Hadoop 2.x生态系統

大資料企業學習篇02_1------hadoop初識

Sqoop:關系型的資料庫把資料存儲到HDFS上。

Flume:日志檔案的收集

MapReduce不是那麼好寫,門檻比較高,又有了Hive

Oozie:任務的管理與排程

Clodera Manager:整個叢集資源的管理界面

Zookeeper:協作架構

Hue:web架構

三.Hadoop的環境配置

1.環境準備

1)删除系統預設的Java版本(需要切換到root)

$>rpm -qa|grep java  //檢視 open jdk
    $>rpm -e --nodeps 檔案名 //強制解除安裝
           

2)解壓Java包

$>tar -zvf jdk-u67-linux-x64.tar.gz -C /soft
           

3)建立符号連結

$>ln -s java jdk1._67
           

4)配置Java環境變量(/etc/profile)

......
export JAVA_HOME=/soft/java
export PATH=$PATH:$JAVA_HOME/bin
           

5)使配置檔案生效

$>source /etc/profile
           

6)驗證Java環境是否配置成功

$>java -version
           

2.環境搭建

1)本地模式

1.解壓Hadoop包

$>tar -zvf  hadoop-.tar.gz -C /soft
           

2)配置etc/hadoop/hadoop-env.sh(配置Java環境,已防萬一)

3)測試運作

$ mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-..jar grep input output 'dfs[a-z.]+'
  $ cat output/*
           

2)僞分布式

1.配置etc/hadoop/core-site.xml

<configuration>
    #配置hdfs檔案系統
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://s201:8020</value>
    </property>
    #配置Hadoop的臨時目錄
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/soft/hadoop/tmp</value>
    </property>

</configuration>
           

2.配置etc/hadoop/hdfs-site.xml

#配置儲存檔案副本數
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
           

3.格式化檔案系統

$ bin/hdfs namenode -format
           

4.啟動NameNode和DataNode

$ sbin/hadoop-daemon.sh start namenode //單獨啟動namenode
$ sbin/hadoop-daemons.sh start datanode //單獨啟動datanode
$ sbin/start-dfs.sh   //同時啟動namenode和datanode  
           

5.以下可參考官方文檔了

http://hadoop.apache.org/docs/r2.7.4/hadoop-project-dist/hadoop-common/SingleCluster.html#Installing_Software

6.配置etc/hadoop/yarn-site.xml

<configuration>
    #配置mapreduce程式
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    #配置resourcemanager所在節點
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>s201</value>
    </property>
</configuration>
           

7.配置etc/hadoop/mapred-site.xml

#配置計算架構為yarn,預設是本地
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
           

注意:監控界面:HDFS端口是主機名+50070,resourcemanager的端口是主機名+8088

四.初識MapReduce應用

1.曆史伺服器

啟動:

$>sbin/mr-jobhistory-daemon.sh start historyserver
           

停止:

$>sbin/mr-jobhistory-daemon.sh stop historyserver
           

2.日志聚集

應用運作完成以後,将日志資訊上傳到HDFS系統上

需要配置yarn-site.xml

<configuration>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>360</value>
    </property>
</configuration>
           

3.垃圾回收間隔

配置core-site.xml

<configuration>
    <property>
        <name>fs.trash.interval</name>
        <value>600</value>
    </property>
</configuration>
           

4.啟動方式

1)各個服務元件逐一啟動

* hdfs

hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode

* yarn

yarn-daemon.sh start|stop resourcemanager|nodemanager

* mapreduce

mr-historyserver-daemon.sh start|stop historyserver

2)各個子產品分開啟動

* hdfs

start-dfs.sh

stop-dfs.sh

* yarn

start-yarn.sh

stop-yarn.sh

3)全部啟動(不推薦)

start-all.sh

stop-all.sh

5.ssh免密登入

1)生成密鑰對

$>ssh-keygen -t rsa
           

2)拷貝檔案到需要登入的機器上

$>ssh-copy-id s202
           

6.各個服務元件運作在那個配置中

NameNode

core-site.xml

fs.defaultFS

hdfs://s201:8020

DataNodes

slaves

s202

s203

s204

SecondaryNameNode

hdfs-site.xml

dfs.namenode.secondary.http-address

s204:50090

YARN

ResourceManager

yarn-site.xml

yarn.resourcemanager.hostname

s201

NodeManagers

slaves

s202

s203

s204

MapReduce HistoryServer

mapred-site.xml

mapreduce.jobhistory.address

s201:10020

mapreduce.jobhistory.webapp.address

s201:19888

繼續閱讀