Hadoop2初介紹與OSX安裝Hadoop2

hadoop2初介紹

在之前公司工作的時候,小組長曾經抱怨過hadoop升級後不向下兼容等系列問題,使用不同的版本總是很糾結,版本分裂各種問題。後來自己找工作的途中,發現很多公司都在用hadoop搭建自己的數據中心,特別是去匯豐面試、其他幾個公司面試,都很關心集羣大數據問題。之前在騰訊實習的時候重點研究過hadoop1.0版本,隔了很久,開始補習一下hadoop。

爲什麼會有hadoop2的出現?可以看一下我目錄中的另外幾篇文章講hadoop2的架構。在這裏拋磚引玉,在騰訊架構平臺部的時候有一句話很經典:好的架構是進化而來,不是設計而來的。對於hadoop引用這句話實在是太適合不過了。

hadoop2與hadoop1有着天壤的區別。hadoop1是基於HDFS和MapReduce分佈式處理引擎的架構,hadoop2是基於HDFS和Yarn資源調度引擎的架構上有一個叫MapReduce的框架。爲什麼是Yarn而不是Young?哈,因爲Yarn叫Yet Another Resource Negotiator(一種資源協調者)。

對於機器學習或者深度學習的算法計算處理有7大任務:

  1. 基礎分析
  2. 線性代數
  3. 廣義多體
  4. 圖論問題
  5. 優化問題(凸優化)
  6. 積分
  7. 對比

Hadoop1的MapReduce架構對於第一點基礎分析來說是非常好的,但是對於上述所說的其他6個點,特別是圖論、迭代等操作非常麻煩和耗時(不是說不行)、對於實時分析和流分析也不太和諧,成爲了hadoop1的設計缺陷。

Yarn

爲了解決這個問題,在MapReduce的架構上面改進是很困難的,因爲最開始的設計理念就是爲了解決線性問題,重點不在資源調度等問題。因此hadoop社區羣衆根據hadoop1的缺陷從新設計底層架構,讓MapReduce成爲跟spark、storm等相似的框架,設計Yarn爲其他框架進行羣集資源調度,就像下圖所示。這樣整個hadoop的做的就是一個大數據羣集生態,我就是大笨象通吃所有資源,爲其他框架服務。

OSX安裝Hadoop2

之前買了3臺阿里雲1核1G服務器用ambari架設一個集羣,事實證明是可行的。如果你仔細看看價格,第一眼看上去覺得很犯二,完全沒有這個必要,貌似想要怎麼樣的配置阿里雲都有,而且跟買好幾個集羣的價格差不多。但是,在操作系統裏面的IO是有限的,集羣雖然會有傳輸時間的耗費、但是在系統裏面任務越多,IO佔用情況越嚴重,對比起單機的IO效果會更優),另外一個就是我個人覺得Yarn的capacity調度器對海量任務的資源的調度會比Linux的好。對於上面所述的兩個問題,阿里雲都有推出對應解決方案,但是價格不菲呀,還是自己乖乖做集羣吧。

阿里雲

安裝正文開始:

在mac上單機安裝hadoop2的目的就是爲了能夠學習和調試hadoop程序。

1.JAVA

檢查系統java版本

$ java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)

這樣顯示你就對了,如果系統提示沒有安裝java,那麼就。。。

2.SSH

檢查ssh連接本地是否成功,hadoop通過ssh通信的

$ ssh localhost

如果不是顯示這樣的話

Last login: Wed May  4 17:55:02 2016

把ssh本地的公鑰id_dsa.pub傳給系統,告訴系統可以直接使用公鑰進行登陸

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3.下載hadoop2

下載一個hadoop版本,最好是stable版本。

4.hadoop啓動設置

解壓hadoop,爲了後面追加spark等其他大數據計算框架,所以把hadoop放在bigdata文件裏

$ tar -xvf hadoop-2.6.4.tar.gz
$ mkdir -p ~/bigdata | mv hadoop-2.6.4 ~/bigdata

找到java的環境變量位置

$ /usr/libexec/java_home

發現環境變量位置其實是指向

/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home

於是修改系統的JAVA_HOME環境變量

$ vi ~/.bash_profile

添加兩行

JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home"
export $JAVA_HOME

先來測試一下hadoop能不能用:

$ cd ~/bigdata/hadoop.2.6.4
$ bin/hadoop

出現了這個那就證明hadoop可以正常啓動了

Usage: hadoop [--config confdir] COMMAND
       where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar <jar>            run a jar file
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp <srcurl> <desturl> copy file or directories recursively
  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
  classpath            prints the class path needed to get the
  credential           interact with credential providers
                       Hadoop jar and the required libraries
  daemonlog            get/set the log level for each daemon
  trace                view and modify Hadoop tracing settings
 or
  CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.

5. hadoop配置

修改下面的配置項文件,下面逐一介紹

1) etc/hadoop/core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

2) etc/hadoop/hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

3) etc/hadoop/mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

4) etc/hadoop/yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

5. 運行

先去檢測一下YARN和HDFS是否正常運行,首先對HDFS格式化一下,首次運行HDFS之前都要進行一次格式化

$ cd ~/bigdata/hadoop.2.6.4
$ ./bin/hdfs namenode -format

開啓HDFS服務

$ sbin/start-dfs.sh

如果沒有報錯並顯示成功的話,可以打開瀏覽器 http://localhost:50070/,看到HDFS的namenode各種配置,關於系統剩下多少G有多少G東西。

在HDFS文件系統中創建一個user目錄

$ ./bin/hdfs dfs -mkdir /user
$ ./bin/hdfs dfs -mkdir /user/{username} #make sure you add correct username here

開啓Yarn

$ ./sbin/start-yarn.sh

如果沒有報錯那麼打開http://localhost:8088/可以看到Yarn的web可視化界面,以上界面對比起ambari都弱爆了,ambari建議自己買3臺阿里雲玩一下,有空放出阿里雲的ambari安裝配置,這個對網絡的要求有點高,因爲ambari鏡像所在的國外服務器國內訪問非常很差,經常連不上,要不下載中斷。

7.配置Hadoop快速啓動項

因爲每次開啓hadoop都要經過下面兩個步驟

$ sbin/start-yarn.sh
$ sbin/start-dfs.sh
$ ....
$ sbin/stop-yarn.sh
$ sbin/stop-dfs.sh

每次使用hadoop都需要碼不少路徑,於是做點懶人設置,把可能用到的命令都放在系統環境裏,一勞永逸

$ vi ~/.bash_profile

在bash_profile文件添加下面幾行,分別設置了hstart一鍵啓動hadoop和hstop一鍵停止hadoop服務,hadoc直接在chrome中打開hadoop的document文檔,方便查看翻閱資料,剩下的就是hdfs、hadoop、yarn和mapred命令了。

HADOOP_PATH='/Users/chenzomi/bigdata/hadoop-2.6.4'
alias hstart='$HADOOP_PATH/sbin/start-dfs.sh;$HADOOP_PATH/sbin/start-yarn.sh'
alias hstop='$HADOOP_PATH/sbin/stop-dfs.sh;$HADOOP_PATH/sbin/stop-yarn.sh'
alias hdfs='$HADOOP_PATH/bin/hdfs'
alias hadoop='$HADOOP_PATH/bin/hadoop'
alias yarn='$HADOOP_PATH/bin/yarn'
alias mapred='$HADOOP_PATH/bin/mapred'
alias hadoc='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome $HADOOP_PATH/share/doc/hadoop/index.html'

讓上面的用戶配置環境生效:

$ source ~/.bash_profile

到這裏,你已經安裝好hadoop2了。接下來好好玩一下hadoop吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章