1.Hadoop的整體印象
2.Hadoop的優勢
3.Hadoop可以做什么
4.Hadoop結構
4.2 Hadoop計算--MapReduce
5.Hadoop生態
二、Hadoop實際操作
本文內容諸多借鑒,在借鑒處會表示出處,可在出處查看詳情。
一、理論知識
參考Hadoop是什么,能干什么,怎么使用
1.Hadoop的整體印象
一句話概括:Hadoop就是存儲海量數據和分析海量數據的工具。
Hadoop是由java語言編寫的,在分布式服務器集群上存儲海量數據并運行分布式分析應用的開源框架,其核心部件是HDFS與MapReduce。
HDFS是一個分布式文件系統:引入存放文件元數據信息的服務器Namenode和實際存放數據的服務器Datanode,對數據進行分布式儲存和讀取。
MapReduce是一個計算框架:MapReduce的核心思想是把計算任務分配給集群內的服務器里執行。通過對計算任務的拆分(Map計算/Reduce計算)再根據任務調度器(JobTracker)對任務進行分布式計算。
2.Hadoop的優勢
高可靠性 : Hadoop 按位存儲和處理數據的能力值得人們信賴。 高擴展性 : Hadoop 是在可用的計算機集簇間分配數據并完成計算任務的,這些集簇可以方便地擴展到數以干計的節點中。 高效性 : Hadoop能夠在節點之間動態地移動數據,并保證各個節點的動態平衡,因此處理速度非常快。 高容錯性 : Hadoop能夠自動保存數據的多個副本,并且能夠自動將失敗的任務重新分。 低成本 : 與一體機、商用數據倉庫以及 QlikView、 Yonghong Z- Suites 等數據集市相比,Hadoop 是開源的,項目的軟件成本因此會大大降低。Hadoop 帶有用 Java 語言編寫的框架,因此運行在 linux 生產平臺上是非常理想的, Hadoop 上的應用程序也可以使用其他語言編寫,比如 C++。
3.Hadoop可以做什么
可以大數據存儲:分布式存儲 日志處理:擅長日志分析 ETL:數據抽取到oracle、mysql、DB2、mongdb及主流數據庫 機器學習: 比如Apache Mahout項目 搜索引擎:Hadoop + lucene實現 數據挖掘:目前比較流行的廣告推薦,個性化廣告推薦
Hadoop是專為離線和大規模數據分析而設計的,并不適合那種對幾個記錄隨機讀寫的在線事務處理模式。
實際應用:
Flume+Logstash+Kafka+Spark Streaming進行實時日志處理分析
酷狗音樂的大數據平臺
4.Hadoop結構
參考Hadoop 系列(一)基本概念
4.1 Hadoop存儲–HDFS
Hadoop 的存儲系統是 HDFS(Hadoop Distributed File System)分布式文件系統,對外部客戶端而言,HDFS 就像一個傳統的分級文件系統,可以進行創建、刪除、移動或重命名文件或文件夾等操作,與 Linux 文件系統類似。
Hadoop HDFS 的架構是基于一組特定的節點構建的(見圖s),這些節名稱節點(NameNode,僅一個),它在 HDFS 內部提供元數據服務;第二名稱節點(Secondary NameNode),名稱節點的幫助節點,主要是為了整合元數據操作(注意不是名稱節點的備份);數據節點(DataNode),它為 HDFS 提供存儲塊。由于僅有一個 NameNode,因此這是 HDFS 的一個缺點(單點失敗,在 Hadoop2.x 后有較大改善)。存儲在 HDFS 中的文件被分成塊,然后這些塊被復制到多個數據節點中(DataNode),這與傳統的 RAID 架構大不相同。塊的大小(通常為 128M)和復制的塊數量在創建文件時由客戶機決定。名稱節點可以控制所有文件操作。HDFS 內部的所有通信都基于標準的 TCP/IP 協議。
(1)名稱節點(NameNode)
它是一個通常在HDFS架構中單獨機器上運行的組件,負責管理文件系統名稱空間和控制外部客戶機的訪問。NameNode決定是否將文件映射到DataNode上的復制塊上。對于最常見的3個復制塊,第一個復制塊存儲在同一機架的不同節點上,最后一個復制塊存儲在不同機架的某個節點上。
(2)數據節點(DataNode)
數據節點也是一個通常在HDFS架構中的單獨機器上運行的組件。Hadoop集群包含一個NameNode和大量DataNode。數據節點通常以機架的形式組織,機架通過一個交換機將所有系統連接起來。