1. 程式人生 > 實用技巧 >Hadoop演進與Hadoop生態

Hadoop演進與Hadoop生態

瞭解對比Hadoop不同版本的特性,可以用圖表的形式呈現。

ApacheHadoop版本分為兩代,我們將第一代Hadoop稱為Hadoop1.0,第二代Hadoop稱為Hadoop2.0。第一代Hadoop包含三個大版本,分別是0.20.x,0.21.x和0.22.x,其中,0.20.x最後演化成1.0.x,變成了穩定版,而0.21.x和0.22.x則NameNodeHA等新的重大特性。第二代Hadoop包含兩個版本,分別是0.23.x和2.x,它們完全不同於Hadoop1.0,是一套全新的架構,均包含HDFSFederation和YARN兩個系統,相比於0.23.x,2.x增加了NameNodeHA和Wire-compatibility兩個重大特性。

Hadoop生態的組成、每個元件的作用、元件之間的相互關係,以圖例加文字描述呈現。

Hadoop生態圈中包含很多元件,比如HDFS、Mapreduce、Hive、Hbase等等,眾多元件相互作用,形成了完整的Hadoop生態。

HDFS(Hadoop distribute file system)——Hadoop生態系統的基礎元件Hadoop分散式檔案系統。

HBase—— 一個構建在HDFS之上的面向列的NoSql資料庫,HBase用於對打量資料進行快速讀取/寫入。

MapReduce——MapReduce是Hadoop的主要執行框架,它是一個用於分散式並行資料處理的程式設計模型,將作業分為mapping階段和reduce階段。

Zookeeper——Zookeeper是Hadoop的分散式協調服務。Zookeeper被設計成可以在機器叢集上執行,是一個具有高度可用性的服務,用於Hadoop操作的管理,而且很多Hadoop元件都依賴它。

Oozie—— Oozie是一個北極測很難過到Hadoop軟體棧中的可擴充套件的Workflow系統。用於協調多個MapReduce作業的執行。

Pig——Pig是對MapReduce程式設計複雜性的抽象,Pig平臺包含用於分析Hadoop資料集的執行環境和指令碼語言(Pig Latin)。

Hive——類似於SQL的高階語言,用於執行對儲存在Hadoop中資料的查詢。

Sqoop是一個連通性工具,用於在關係型資料庫和資料倉庫Hadoop之間移動資料。

Fulme是一個分散式的、具有可靠性和高可用性的服務,用於從單獨的機器上將大量資料高效的收集、聚合並移動到HDFS中。

官網學習Hadoop的安裝與使用,用文件的方式列出步驟與注意事項。

準備啟動Hadoop叢集

解壓縮下載的Hadoop發行版。在發行版中,編輯檔案etc / hadoop / hadoop-env.sh以定義一些引數,如下所示:

  #設定為Java安裝的根目錄
  匯出JAVA_HOME = / usr / java / latest

嘗試以下命令:

  $ bin / hadoop

這將顯示hadoop指令碼的用法文件。

現在,您可以以三種支援的模式之一啟動Hadoop叢集:

獨立執行

預設情況下,Hadoop被配置為在非分散式模式下作為單個Java程序執行。這對於除錯很有用。

下面的示例複製解壓縮的conf目錄以用作輸入,然後查詢並顯示給定正則表示式的每個匹配項。輸出被寫入給定的輸出目錄。

  $ mkdir輸入
  $ cp etc / hadoop / *。xml輸入
  $ bin / hadoop jar share / hadoop / mapreduce / hadoop-mapreduce-examples-2.10.0.jar grep輸入輸出'dfs [az。] +'
  $ cat輸出/ *

偽分散式操作

Hadoop也可以以偽分散式模式在單節點上執行,其中每個Hadoop守護程式都在單獨的Java程序中執行。

組態

使用以下內容:

等/hadoop/core-site.xml:

<配置>
    <屬性>
        <名稱> fs.defaultFS </名稱>
        <value> hdfs:// localhost:9000 </ value>
    </ property>
</ configuration>

等/hadoop/hdfs-site.xml:

<配置>
    <屬性>
        <name> dfs.replication </ name>
        <value> 1 </ value>
    </ property>
</ configuration>

設定無密碼SSH

現在檢查您是否可以在不使用密碼的情況下SSH到本地主機:

  $ ssh本地主機

如果沒有密碼就無法SSH到本地主機,請執行以下命令:

  $ ssh-keygen -t rsa -P''-f〜/ .ssh / id_rsa
  $ cat〜/ .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
  $ chmod 0600〜/ .ssh / authorized_keys

執行

以下說明是在本地執行MapReduce作業。如果要在YARN上執行作業,請參閱YARN在單節點上

  1. 格式化檔案系統:

      $ bin / hdfs namenode-格式
    
  2. 啟動NameNode守護程式和DataNode守護程式:

      $ sbin / start-dfs.sh
    

    hadoop守護程式日誌輸出將寫入$ HADOOP_LOG_DIR目錄(預設為$ HADOOP_HOME / logs)。

  3. 瀏覽Web介面的NameNode;預設情況下,它在以下位置可用:

    • NameNode-http:// localhost:50070 /
  4. 設定執行MapReduce作業所需的HDFS目錄:

      $ bin / hdfs dfs -mkdir / user
      $ bin / hdfs dfs -mkdir / user / <使用者名稱>
    
  5. 將輸入檔案複製到分散式檔案系統中:

      $ bin / hdfs dfs -put etc / hadoop輸入
    
  6. 執行提供的一些示例:

      $ bin / hadoop jar share / hadoop / mapreduce / hadoop-mapreduce-examples-2.10.0.jar grep輸入輸出'dfs [az。] +'
    
  7. 檢查輸出檔案:將輸出檔案從分散式檔案系統複製到本地檔案系統並檢查它們:

      $ bin / hdfs dfs-獲取輸出輸出
      $ cat輸出/ *
    

    要麼

    檢視分散式檔案系統上的輸出檔案:

      $ bin / hdfs dfs -cat輸出/ *
    
  8. 完成後,使用以下命令停止守護程序:

  9. $ sbin / stop-dfs.sh

  10. 4.評估華為hadoop發行版本的特點與可用性。

華為FusionInsight大資料平臺是集 Hadoop 生態發行版、大規模並行處理資料庫、大資料雲服務於一體的融合資料處理與服務平臺,擁有端到端全生命週期的解決方案能力。除了提供包括批處理、記憶體計算、流計算和MPPDB在內的全方位資料處理能力外,還提供資料分析挖掘平臺、資料服務平臺,幫助使用者實現從資料到知識,從知識到智慧的轉換,進而幫助使用者從海量資料中挖掘資料價值。

此外華為FusionInsight大資料平臺是根據行業客戶需求進行優化的解決方案。為解決使用者在具體場景下的問題,提供許多創新的技術能力,舉幾個例子:

第一個是統一SQL。大資料技術中有很多能夠利用SQL語言進行資料處理的元件,比如Hive、SparkSQL、Elk、MPPDB等,當用戶對於這些元件進行業務開發時,需要對不同元件分別進行,造成很大的不便。FusionInsight提供統一SQL,對外業務介面只出現一個SQL開發管理介面,通過統一SQL的業務分發層進行業務分發,這樣就簡化了業務開發。同時,華為還提供了SQL on Hadoop引擎Elk,這個引擎完全相容SQL 2003標準,無需修改測試指令碼就可以通過TPC-DS測試,效能超過開源產品3倍。通過使用統一SQL技術,某大型保險公司實現了用大資料平臺替代傳統數倉,在複雜計算業務場景下,其效能提升了10-100倍。

第二個是實時搜尋。華為FusionInsight率先實現了對Hadoop平臺與MPPDB數倉平臺的統一全文檢索,率先支援SQL on Solr介面,提升業務開發效率5倍以上,獨創標籤索引方案,提升搜尋效能3-10倍。目前,實時搜尋技術在平安城市和金融行業已經實現商用。在國內某省的平安城市專案中,百億級規模資料集中查詢,實時搜尋響應時間<3秒。

第三個是實時決策。與日常生活息息相關的很多業務是需要實時決策的,比如使用銀行卡交易過程中的風險控制。由於傳統技術處理速度的原因,往往只能實現事後風控。也就是說使用者在刷卡完成後,銀行才能夠檢查出來,剛才的交易是否有風險。這樣對於銀行和客戶而言,都會有很大的風險存在。而華為FusionInsight實時決策平臺,可以實現毫秒級複雜規則的風險檢查,提供百萬TIPS的業務處理能力,從而讓風險控制從事後變為事中,並確保端到端的交易可在500毫秒內完成,不影響交易使用者的體驗。

第四個是圖分析技術。在生活中有很多時候是需要進行使用者的關係分析來進行風險控制和業務處理的。如果我們的客戶中有一個是VIP客戶,那麼他的朋友符合VIP客戶條件的可能性就會很大。因此如果我們能夠通過關係分析技術找到他的朋友圈,在針對他的朋友進行鍼對性營銷,那麼業務成功的可能性也就會大大增加。但是,傳統的資料庫技術在處理客戶關係發現時很困難,某公司曾經做過一個測試,想在2000萬客戶中發現客戶間的關係資訊,但是一直無法算出來。但是用圖分析技術就可以很好解決這一類問題。因為在圖資料庫中,使用者就是點,使用者關係就是邊,發現使用者關係就變成了發現點與點間需要幾條邊的問題。華為的分散式圖資料庫,能夠實現萬億頂點百億邊的實時查詢,從而很快發現使用者關係。在某專案中,華為幫助客戶實現了13.7億條關係圖譜資料,3層關係查詢秒級響應,從而大大提高了業務響應的速度。