Hadoop介紹與安裝

前言

最近想學習下大數據,有點急於求成,因而去網上找了各類培訓機構的視頻,發現大都質量不佳,理論基本不說或者簡單講下,而後教你照貓畫虎的敲代碼,出了問題都無法分析。最後仍是找了廈門大學的公開課從理論開始穩紮穩打的學習了。node

一 Hadoop起源

Hadoop的理論起源主要來自谷歌公司的三大論文,並迅速應用於全球各大互聯網公司。所以,學習大數據Hadoop是繞不開的一個知識點。今年來,大數據的興起其實來自於計算機技術的發展,物聯網技術產生了大量的數據,雲技術使得計算機存儲與運算資源更加普及,所以大數據技術應運而出,用以解決大量數據的存儲與計算的問題。web

二 Hadoop生態圈

學習Hadoop,須要知道Hadoop生態圈中各個項目的功能與做用,爲什麼要用開發這種新項目,而不使用已有項目實現這種功能。數據庫

2.1 HDFS

Hadoop的底層文件系統,與傳統文件系統不一樣在於它是分佈式的。同時與已有的分佈式文件系統相比,它又有着舊分佈式文件系統沒有的優勢。如:高可用性,高可靠性,吞吐量大,能使用廉價服務器構建,可經過不斷增長機器數來進行拓展。具體實如今HDFS文章中記錄。服務器

2.2 HBase

構建在HDFS之上的分佈式數據庫系統。是一種基於列的NoSQL數據庫,從另外一個角度看也能當作鍵值對的NoSQL數據庫。與傳統關係型數據庫相比,最大的優點在於可經過增長機器進行橫向擴展,而且能使用廉價服務器。app

2.3 Hive

一種分佈式數據倉庫,能夠導入外部數據後用類SQL語言進行操做。通常用於歷史數據的查詢與分析。與HBase不一樣,HBase經常使用於實時的交互式查詢。框架

2.4 MapRuduce

一種分佈式計算框架,MapRuce原本就是一種計算模型的名稱。核心思想是「分而治之」,能將計算分解成多個小計算,由多個機器同時計算。適合離線批處理。webapp

2.5 Storm

一種流式計算框架,MapRuce適合批處理,沒法完成流式數據的處理,所以開發出流式處理框架。分佈式

2.6 常見大數據處理需求

  • 離線批處理,特色:使用歷史數據,大批量的處理,要求吞吐率。
  • 實時交互式處理,特色:用戶交互使用,要求反映速度在秒級到數分鐘之間。
  • 流式數據處理,特色:數據以流的形式輸入,要求毫秒級的處理速度,且處理後的數據大部分都不用儲存。

2.7 Hadoop組件關係

基本的關係就是,底層用HDFS存儲,之上是核心計算框架MapRuduce。而Hive,Hbase,Pig等等組件通常都是將自身的操做轉化成Mapreduce代碼而後經過Mapreduce進行計算實現功能。同時與MapRuduce框架同一層次的Storm解決了流式數據的處理。Hbase雖然是使用Mapreduce框架進行處理,可是基本也能實現實時交互式處理的要求。(也正是Mapreduce存在種種問題,Spark漸漸興起,雖然Mapreduce也作了各類優化,可是在某些領域相比Spark仍是有些差距)。oop

三 Hadoop安裝

  1. 準備。同一局域網的Linux服務器數臺,我是用個人遊戲本同時開了3個虛擬機代替的。學習

  2. Linux裏建立hadoop用戶,專門負責Hadoop項目,便於管理與權限劃分。

  3. 安裝JDK,下載Hadoop時官方會指明JDK版本需求,設置JDK環境變量

  4. 安裝SSH並設置免密登陸。由於HDFS的NameNode與其餘DateNode等節點的通信與管理就是基於SSH協議的。而且將要使用的機器域名寫入hosts文件,方便命名。

  5. 去官網下載並解壓Hadoop。修改hadoop配置文件,位於hadoop/etc/hadoop /下面,分別有:
  • slaves。寫入DateNode的機器,由於以前修改了域名解析文件,能夠直接寫域名,不用寫IP了。
  • core-site.xml。Hadoop的核心配置文件
    fs.defaultFS,默認文件系統的主機和端口,這裏的文件系統就是hdfs。
    hadoop.tmp.dir hadoop的臨時文件路徑,不設置則會使用系統臨時文件路徑,系統重啓後就丟失了。
<configuration>
       <property>
               <name>fs.defaultFS</name>
               <value>hdfs://Master:9000</value>
       </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/usr/local/hadoop/tmp</value>
               <description>Abase for other temporary directories.</description>
       </property>
</configuration>
  • hdfs-site.xml。HDFS的配置文件
    dfs.namenode.secondary.http-address。SecondNameNode的機器和端口
    dfs.replication。HDFS系統保存的文件副本數。
    dfs.namenode.name.dir,dfs.datanode.data.dir。NameNode和DataNode數據在本來文件系統中的存放位置。
<configuration>
       <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>Master:50090</value>
       </property>
       <property>
               <name>dfs.replication</name>
               <value>1</value>
       </property>
       <property>
               <name>dfs.namenode.name.dir</name>
               <value>file:/usr/local/hadoop/tmp/dfs/name</value>
       </property>
       <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/usr/local/hadoop/tmp/dfs/data</value>
       </property>
</configuration>
  • mapred-site.xml。MapReuce的配置文件
    mapreduce.framework.name。MapReuce的資源管理系統。這個選yarn,本來是MapReuce本身進行分佈式計算時的資源管理,後來發現效率不足便分割開來從新開發了一套框架。
    mapreduce.jobhistory.address。MapReuce的任務日誌系統,指定機器和端口。
    mapreduce.jobhistory.webapp.address。任務日誌系統web頁面所使用的機器和端口,經過這個能夠在web頁面中查看任務日誌系統。
<configuration>
       <property>
               <name>mapreduce.framework.name</name>
               <value>yarn</value>
       </property>
       <property>
               <name>mapreduce.jobhistory.address</name>
               <value>Master:10020</value>
       </property>
       <property>
               <name>mapreduce.jobhistory.webapp.address</name>
               <value>Master:19888</value>
       </property>
</configuration>
  • yarn-site.xml。YARN的配置文件
    yarn.resourcemanager.hostname。YARN的ResourceManager所使用的機器。這個負責進行全局的資源分配,管理。
    yarn.nodemanager.aux-services。能夠自定義一些服務,好比MapReuce的shuffle就是用這個配置的。目前咱們使用填shuffle就好了。
<configuration>
       <property>
               <name>yarn.resourcemanager.hostname</name>
               <value>Master</value>
       </property>
       <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
       </property>
</configuration>
  1. 配置好之後將Hadoop文件從主節點複製到各個從節點,Hadoop的HADFS與MapReduce就安裝完成了。(CentOs系統須要關閉相應防火牆)

四 Hadoop生態圈其餘組件安裝

看看網友博客和官方文檔差很少就會了,基本一個形式。下載解壓-配置環境變量-配置組件的配置文件,基本都是xxxx-env.sh,xxx-site.sh,xxx-core.sh,slave,work這種,在裏面按照需求配置參數就行了,具體參數意思和必需要配置的參數看看官方文檔也就懂了(滑稽)。

相關文章
相關標籤/搜索