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大任務:
- 基礎分析
- 線性代數
- 廣義多體
- 圖論問題
- 優化問題(凸優化)
- 積分
- 對比
Hadoop1的MapReduce架構對於第一點基礎分析來說是非常好的,但是對於上述所說的其他6個點,特別是圖論、迭代等操作非常麻煩和耗時(不是說不行)、對於實時分析和流分析也不太和諧,成爲了hadoop1的設計缺陷。
爲了解決這個問題,在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吧。