你好。

Hadoop是現在流行的大數據處理平台,幾乎已經成為大數據的代名詞,所以學大數據hadoop是必學的。下面從以下幾個點講一下:

一、為什麼會有大數據處理

傳統模式已經滿足不了大數據的增長

1)存儲問題

  • 傳統:存mysql等關係型資料庫,資料庫想存下大量的數據,需要高性能的伺服器,幾十 萬一台伺服器,隨著數據量越來越大,加這種伺服器已經解決不了根本問題。
  • 大數據存儲:HDFS存海量數據,HDFS可以作用在低成本的硬體上,直接存磁碟、數據可以備份,不會丟失。磁碟空間不夠可以加磁碟。

2)分析數據問題

  • 傳統:當達到億級別以後,資料庫的性能下降很快,查詢速度也會下降。
  • 大數據:分散式計算。

二、什麼是hadoop?

Hadoop項目是以可靠、可擴展和分散式計算為目的而發展而來的開源軟體。

  • 可靠:有備份,數據不易丟失。hdfs可以備份數據。
  • 可擴展: 存儲不夠,加磁碟,加機器掛磁碟 分析CPU內存資源不夠,加機器加內存

  • 分散式計算: 多個機器同時計算一個任務的一部分,然後,把每個計算的結果進行匯總。

三、hadoop核心組件

用於解決兩個核心問題:存儲和計算

核心組件 :

1)Hadoop Common:一組分散式文件系統和通用I/O的組件與介面(序列化、Java RPC 和持久化數據結構)。

2)Hadoop Distributed FileSystem(Hadoop分散式文件系統HDFS)

HDFS是存儲數據的地方,就像我們電腦的硬碟一樣文件都存儲在這個上面。

3)Hadoop MapReduce(分散式計算框架)

MapReduce是對數據進行處理計算的,它有個特點就是不管多大的數據只要給它時間它就能把數據跑完,但是時間可能不是很快所以它叫數據的批處理。

4)Hadoop YARN(分散式資源管理器)

YARN是體現Hadoop平台概念的重要組件,有了它大數據生態體系的其它軟體就能在hadoop上運行了,這樣就能更好的利用HDFS大存儲的優勢和節省更多的資源。

關於大數據的基礎知識,知乎專欄:從頭學習大數據,供你參考學習!


1、Hadoop是什麼

1.1、小故事版本的解釋

小明接到一個任務:計算一個100M的文本文件中的單詞的個數,這個文本文件有若干行,每行有若干個單詞,每行的單詞與單詞之間都是以空格鍵分開的。對於處理這種100M量級數據的計算任務,小明感覺很輕鬆。他首先把這個100M的文件拷貝到自己的電腦上,然後寫了個計算程序在他的計算機上執行後順利輸出了結果。

後來,小明接到了另外一個任務,計算一個1T(1024G)的文本文件中的單詞的個數。再後來,小明又接到一個任務,計算一個1P(1024T)的文本文件中的單詞的個數……

面對這樣大規模的數據,小明的那一台計算機已經存儲不下了,也計算不了這樣大的數據文件中到底有多少個單詞了。機智的小明上網百度了一下,他在百度的輸入框中寫下了:大數據存儲和計算怎麼辦?按下回車鍵之後,出現了有關Hadoop的網頁。

看了很多網頁之後,小明總結一句話:Hadoop就是存儲海量數據和分析海量數據的工具。

1.2、稍專業點的解釋

Hadoop是由java語言編寫的,在分散式伺服器集群上存儲海量數據並運行分散式分析應用的開源框架,其核心部件是HDFS與MapReduce。如果你對大數據開發感興趣,想系統學習大數據的話,可以戳我加入大數據技術學習交流群,私信管理員即可免費領取開發工具以及入門學習資料

HDFS是一個分散式文件系統:引入存放文件元數據信息的伺服器Namenode和實際存放數據的伺服器Datanode,對數據進行分散式儲存和讀取。

MapReduce是一個計算框架:MapReduce的核心思想是把計算任務分配給集群內的伺服器里執行。通過對計算任務的拆分(Map計算/Reduce計算)再根據任務調度器(JobTracker)對任務進行分散式計算。

1.3、記住下面的話:

Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,則MapReduce為海量的數據提供了計算。

把HDFS理解為一個分散式的,有冗餘備份的,可以動態擴展的用來存儲大規模數據的大硬碟。

把MapReduce理解成為一個計算引擎,按照MapReduce的規則編寫Map計算/Reduce計算的程序,可以完成計算任務。

2、Hadoop能幹什麼

大數據存儲:分散式存儲

日誌處理:擅長日誌分析

ETL:數據抽取到oracle、mysql、DB2、mongdb及主流資料庫

機器學習: 比如Apache Mahout項目

搜索引擎:Hadoop + lucene實現

數據挖掘:目前比較流行的廣告推薦,個性化廣告推薦

Hadoop是專為離線和大規模數據分析而設計的,並不適合那種對幾個記錄隨機讀寫的在線事務處理模式。

實際應用:

(1)Flume+Logstash+Kafka+Spark Streaming進行實時日誌處理分析

Hadoop是什麼,能幹什麼,怎麼使用

(2)酷狗音樂的大數據平台

Hadoop是什麼,能幹什麼,怎麼使用

3、怎麼使用Hadoop

3.1、Hadoop集群的搭建

無論是在windows上裝幾台虛擬機玩Hadoop,還是真實的伺服器來玩,說簡單點就是把Hadoop的安裝包放在每一台伺服器上,改改配置,啟動就完成了Hadoop集群的搭建。

3.2、上傳文件到Hadoop集群

Hadoop集群搭建好以後,可以通過web頁面查看集群的情況,還可以通過Hadoop命令來上傳文件到hdfs集群,通過Hadoop命令在hdfs集群上建立目錄,通過Hadoop命令刪除集群上的文件等等。

3.3、編寫map/reduce程序

通過集成開發工具(例如eclipse)導入Hadoop相關的jar包,編寫map/reduce程序,將程序打成jar包扔在集群上執行,運行後出計算結果。


談及大數據技術,主要是存儲和計算兩個大的技術方向。Hadoop作為一個生態系統,自2004年前後,已經發展了十多年,是基於Google發表的大數據論文進行的開源實現。核心模塊包括分散式計算框架MapReduce,分散式文件系統HDFS和分散式列存儲資料庫HBase。

1.MapReduce為大數據場景下數據計算提供了一套通用框架,用於處理TB級別數據的統計、排序等問題(單機內存無法處理)。用戶需自己實現mapper和reducer方法,僅可用於離線批量計算,實時性不高。Spark作為更新一代的分散式計算引擎,更多的利用內存存儲中間結果,減少了磁碟存儲的IO開銷,計算性能更高。流式計算場景下可用的計算引擎有Spark Streaming和Flink。

2.分散式文件系統HDFS,十多年來一直作為大數據存儲的標配。HDFS通過多副本策略,充分利用節點的存儲資源,解決了大數據可靠性,一致性問題。

3.HBase用於解決大數據場景下數據隨機讀寫的問題,基於kv存儲,擴展性更高。


分散式存儲和計算,順帶解決下分散式資源管理的問題

相當於一個最小的分散式計算系統 存儲hdfs. 資源管理yarn 計算MR


謝邀!

hadoop核心技術架構:hdfs和mapreduce。

hdfs,分散式文件存儲。

mapreduce,分散式計算引擎。

雖然這兩個組件從最新技術角度看來已經不那麼優勢,甚至有點不合理。但是畢竟開源最熱,使用最廣泛。所以是大數據入門聖經。


推薦閱讀:
相关文章