大數(shù)據(jù)不得不提到最有用的利器Hadoop忠藤,本文最快的方式讓你上手Hadoop珍手,hadoop快速入門准夷,并且有一個感性的認識类溢,也可以當做步驟的快速索引豪嗽,本文解決以下問題:
- 理解Hadoop是什么
- Hadoop用于做什么以及怎么用
- Hadoop使用整體的一個基本流程和結(jié)構(gòu)
理解Hadoop是什么
HADOOP是apache旗下的一套開源軟件平臺
HADOOP提供的功能:利用服務器集群,根據(jù)用戶的自定義業(yè)務邏輯豌骏,對海量數(shù)據(jù)進行分布式處理
-
HADOOP的核心組件有
- HDFS(分布式文件系統(tǒng))
- YARN(運算資源調(diào)度系統(tǒng))
- MAPREDUCE(分布式運算編程框架)
- 廣義上來說,HADOOP通常是指一個更廣泛的概念——HADOOP生態(tài)圈
-
為什么會有Hadoop呢隐锭?
- HADOOP最早起源于Nutch窃躲。Nutch的設(shè)計目標是構(gòu)建一個大型的全網(wǎng)搜索引擎,包括網(wǎng)頁抓取钦睡、索引蒂窒、查詢等功能,但隨著抓取網(wǎng)頁數(shù)量的增加荞怒,遇到了嚴重的可擴展性問題——如何解決數(shù)十億網(wǎng)頁的存儲和索引問題洒琢。
- 2003年、2004年谷歌發(fā)表的兩篇論文為該問題提供了可行的解決方案褐桌。
- 分布式文件系統(tǒng)(GFS)衰抑,可用于處理海量網(wǎng)頁的存儲
- 分布式計算框架MAPREDUCE,可用于處理海量網(wǎng)頁的索引計算問題荧嵌。
- Nutch的開發(fā)人員完成了相應的開源實現(xiàn)HDFS 和MAPREDUCE呛踊,并從Nutch中剝離成為獨立項目HADOOP砾淌,到2008年1月,HADOOP成為Apache頂級項目谭网,迎來了它的快速發(fā)展期汪厨。
Hadoop用于做什么以及怎么用
Hadoop用于做什么
- 云計算是分布式計算、并行計算愉择、網(wǎng)格計算劫乱、多核計算、網(wǎng)絡存儲锥涕、虛擬化衷戈、負載均衡等傳統(tǒng)計算機技術(shù)和互聯(lián)網(wǎng)技術(shù)融合發(fā)展的產(chǎn)物。借助IaaS(基礎(chǔ)設(shè)施即服務)站楚、PaaS(平臺即服務)脱惰、SaaS(軟件即服務)等業(yè)務模式,把強大的計算能力提供給終端用戶窿春。
- 現(xiàn)階段拉一,云計算的兩大底層支撐技術(shù)為“虛擬化”和“大數(shù)據(jù)技術(shù)”
- 而HADOOP則是云計算的PaaS層的解決方案之一,并不等同于PaaS旧乞,更不等同于云計算本身蔚润。
Hadoop怎么用
-
上面提過其實HADOOP是一個很大的生態(tài)圈,既然是生態(tài)圈就有很多重要的組件:
- HDFS:分布式文件系統(tǒng)
- MAPREDUCE:分布式運算程序開發(fā)框架
- HIVE:基于大數(shù)據(jù)技術(shù)(文件系統(tǒng)+運算框架)的SQL數(shù)據(jù)倉庫工具
- HBASE:基于HADOOP的分布式海量數(shù)據(jù)庫
- ZOOKEEPER:分布式協(xié)調(diào)服務基礎(chǔ)組件
- Mahout:基于mapreduce/spark/flink等分布式運算框架的機器學習算法庫
- Oozie:工作流調(diào)度框架
- Sqoop:數(shù)據(jù)導入導出工具
- Flume:日志數(shù)據(jù)采集框架
(上述的使用方法以后會慢慢補上去尺栖,挖個坑)
-
Hadoop的集群搭建
說道Hadoop的集群搭建嫡纠,就是將所需要的核心組件搭建起來理疙,Hadoop集群包含兩個重要集群:HDFS集群和YARN集群
HDFS集群:負責海量數(shù)據(jù)的存儲畜挨,集群中的角色主要有NameNode / DataNode
YARN集群:負責海量數(shù)據(jù)運算時的資源調(diào)度,集群中的角色主要有 ResourceManager /NodeManager
注意:那mapreduce是什么呢胖烛?它其實是一個應用程序開發(fā)包挫以,主要負責業(yè)務邏輯開發(fā)者蠕。
本集群搭建案例,以5節(jié)點為例進行搭建掐松,角色分配如下:
> hdp-node-01 NameNode SecondaryNameNode(HDFS)
>
> hdp-node-02 ResourceManager (YARN)
>
> hdp-node-03 DataNode NodeManager (HDFS)
>
> hdp-node-04 DataNode NodeManager (HDFS)
>
> hdp-node-05 DataNode NodeManage r(HDFS)
部署圖如下:
因為模擬可以使用模擬器踱侣,模擬五臺linux服務器,細節(jié)忽略大磺。
Hadoop 安裝部署抡句,保證每臺的linux均有Hadoop的安裝包:
規(guī)劃安裝目錄: /home/hadoop/apps/hadoop-2.6.1
-
修改基本配置Haddop文件: $HADOOP_HOME/etc/hadoop/
相應的Hadoop最簡配置如下:-
Hadoop-env.sh
# The java implementation to use. export JAVA_HOME=/home/hadoop/apps/jdk1.8
-
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hdp-node-01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value> </property> </configuration>
-
hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/data/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/data/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.secondary.http.address</name> <value>hdp-node-01:50090</value> </property> </configuration>
-
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
注意:五臺linux配置應該相同,這里使用的hadoop2.6.1根據(jù)自己用的來修改
-
啟動集群
在終端中執(zhí)行:
#初始化HDFS
bin/hadoop namenode -format
#啟動HDFS
bin/start-dfs.sh
#啟動YARN
bin/start-yarn.sh
測試
1杠愧、上傳文件到HDFS
從本地上傳一個文本文件到hdfs的/wordcount/input目錄下
終端代碼:
[HADOOP@hdp-node-01 ~]$ HADOOP fs -mkdir -p /wordcount/input
[HADOOP@hdp-node-01 ~]$ HADOOP fs -put /home/HADOOP/somewords.txt /wordcount/input
?
2待榔、運行一個mapreduce程序
在HADOOP安裝目錄下,運行一個示例mr程序:
cd $HADOOP_HOME/share/hadoop/mapreduce/
hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input /wordcount/output
注意:example是hadoop自帶的程序用于測試是否搭建成功
Hadoop的數(shù)據(jù)處理流程
典型的BI系統(tǒng)流程圖如下:
如圖所示殴蹄,雖然所用技術(shù)也許會有不同究抓,但是流程基本如圖所示:
數(shù)據(jù)采集:定制開發(fā)采集程序猾担,或使用開源框架FLUME
數(shù)據(jù)預處理:定制開發(fā)mapreduce程序運行于hadoop集群
數(shù)據(jù)倉庫技術(shù):基于hadoop之上的Hive
數(shù)據(jù)導出:基于hadoop的sqoop數(shù)據(jù)導入導出工具
數(shù)據(jù)可視化:定制開發(fā)web程序或使用kettle等產(chǎn)品
整個過程的流程調(diào)度:hadoop生態(tài)圈中的oozie工具或其他類似開源產(chǎn)品
?