2-hadoop-Hadoop以及生态
?
Hadoop是什么
1、是一個由apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)
2、主要解決海量數(shù)據(jù)的存儲和海量數(shù)據(jù)的分析計算
3、廣義上說,Hadoop通常是一個廣泛的概念------->Hadoop生態(tài)圈
?
發(fā)展歷史
1、Lucene科=框架是Doug Cutting開創(chuàng)的開源軟件,用java代碼實現(xiàn),于google類似的全文搜索功能
它提供了全文檢索引擎架構(gòu),包括完整的查詢引擎和索引引擎
2、2001年年底Lucene成為Apache基金會的一個子項目
3、對于海量數(shù)據(jù)的場景,Lucene面對和Google同樣的問題,存數(shù)據(jù)滿檢索數(shù)據(jù)速度慢
4、懸系模仿Google解決方法:微型版Nutch
5、Goog是Hadoop的思想之源
論文:GFS--->HDFS, Map-Reduce--->MR,BigTable--->HBase
6、03-04年,Google公開了部分GFS和MapReduce思想的細(xì)節(jié),以此為基礎(chǔ)的Dong Cutting等人用了兩年
業(yè)余時間實現(xiàn)了DFS和MapReduce機制,是哦那個Nutch性能飄升
7、05年Hadoop作為Lucene的一部分正式引入Apache基金會
8、06年,Map-Reduce和Nutch Distribute File System(NDFS)分別納入hadoop的項目中
9、名字來源于其兒子的玩具大象
?
三大發(fā)行版本
Hadoop三大發(fā)行版本:Apache、Cloudrea、Hortonworks
?
Apache:
https://hadoop.apache.org/
Cloudera(CDH版):在大型互聯(lián)網(wǎng)公司使用較多
https://www.cloudera.com/products/open-source/apache-hadoop/key-cdh-components.html
所有版本都是一些列的(如1.2.1直接干一套)
Hortonworks:文檔比較好
?
Hadoop的優(yōu)勢
1、高可靠性
hadoop底層維護多個數(shù)據(jù)副本(至少備份三份),所以即使Hadoop某個計算元素出現(xiàn)故障,也不會導(dǎo)致數(shù)據(jù)丟失
2、高擴展性
在集群間分配任務(wù)數(shù)據(jù),可方便地擴展數(shù)以千計地節(jié)點
3、高效性
在MapReduce的思想下,Hadoop是并行工作的,以加快任務(wù)處理速度
4、高容錯性
能夠自動將失敗的任務(wù)重新分配
?
?
Hadoop1.x和2.x的區(qū)別
?
?HDFS
Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計成適合運行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。
它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點。但同時,它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。
HDFS是一個高度容錯性的系統(tǒng),適合部署在廉價的機器上。
HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。
HDFS放寬了一部分POSIX約束,來實現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。
HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎(chǔ)架構(gòu)而開發(fā)的。
HDFS是Apache Hadoop Core項目的一部分。
這個項目的地址是http://hadoop.apache.org/core/。
?
1、NameNode(nn):存儲文件的元素?fù)?jù),如文件名,文件目錄結(jié)構(gòu)、文件屬性(生成屬性,副本數(shù),文件限制) 以及每個文件的塊列表和塊所在的DataNode等
2、DataNode(dn):在本地文件存儲系統(tǒng)文件塊數(shù)據(jù),以及塊數(shù)據(jù)的校驗和
3、Secondary nameNode(2nn):用來監(jiān)控HDFS狀態(tài)的輔助后臺程序,每個一段時間獲取HDFS元素的快照
?
?
YARN
?
MapReduce
將計算過程分為兩個階段:Map和Reduce
Map階段并行處理輸入數(shù)據(jù)
Reduce階段對Map結(jié)果進行匯總
?
生態(tài)體系
?
1)Sqoop:Sqoop是一款開源的工具,主要用于在Hadoop、Hive與傳統(tǒng)的數(shù)據(jù)庫(MySql)間進行數(shù)據(jù)的傳遞,
可以將一個關(guān)系型數(shù)據(jù)庫(例如 :MySQL,Oracle 等)中的數(shù)據(jù)導(dǎo)進到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進到關(guān)系型數(shù)據(jù)庫中。
2)Flume:Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),
Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,Flume提供對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。
3)Kafka:Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),有如下特性:
(1)通過O(1)的磁盤數(shù)據(jù)結(jié)構(gòu)提供消息的持久化,這種結(jié)構(gòu)對于即使數(shù)以TB的消息存儲也能夠保持長時間的穩(wěn)定性能。
(2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒數(shù)百萬的消息。
(3)支持通過Kafka服務(wù)器和消費機集群來分區(qū)消息。
(4)支持Hadoop并行數(shù)據(jù)加載。
4)Storm:Storm用于“連續(xù)計算”,對數(shù)據(jù)流做連續(xù)查詢,在計算時就將結(jié)果以流的形式輸出給用戶。
5)Spark:Spark是當(dāng)前最流行的開源大數(shù)據(jù)內(nèi)存計算框架。可以基于Hadoop上存儲的大數(shù)據(jù)進行計算。
6)Oozie:Oozie是一個管理Hdoop作業(yè)(job)的工作流程調(diào)度管理系統(tǒng)。
7)Hbase:HBase是一個分布式的、面向列的開源數(shù)據(jù)庫。HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫。
8)Hive:Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的SQL查詢功能,
可以將SQL語句轉(zhuǎn)換為MapReduce任務(wù)進行運行。 其優(yōu)點是學(xué)習(xí)成本低,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,
不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。
10)R語言:R是用于統(tǒng)計分析、繪圖的語言和操作環(huán)境。
R是屬于GNU系統(tǒng)的一個自由、免費、源代碼開放的軟件,它是一個用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具。
11)Mahout:Apache Mahout是個可擴展的機器學(xué)習(xí)和數(shù)據(jù)挖掘庫。
12)ZooKeeper:Zookeeper是Google的Chubby一個開源的實現(xiàn)。它是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),
提供的功能包括:配置維護、名字服務(wù)、 分布式同步、組服務(wù)等。
ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。
?
推薦搭建系統(tǒng)
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Mrchengs/p/11217538.html
總結(jié)
以上是生活随笔為你收集整理的2-hadoop-Hadoop以及生态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。