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