Mac OS X EI Captain 安裝 Hadoop 3.0.0-alpha2

2017年1月番电,Apache Hadoop 提供了 3.0.0-alpha2 版本撒强,先前在安裝 2.7.3 的時(shí)候折騰了半天挽荡,這次更新后小狼也順便重新梳理了一下安裝過程倦零,給需要的同學(xué)做個(gè)參考误续。我知道我知道,就是想讓 Hadoop 先跑起來是吧扫茅,來來來~

安裝時(shí)參考了 Hadoop: Setting up a Single Node Cluster蹋嵌;
以及 Setting up Hadoop 2.7.1 on Mac OS X Yosemite & Hadoop Eclipse Setup
以及 在Mac下安裝Hadoop的坑葫隙。

此外栽烂,作為小白,我把自己在安裝中遇到的一些問題做了備注。

1. PREREQUISITES 安裝前的準(zhǔn)備

a) Java (2020.3.3 更新)

Hadoop 目前支持的 Java 版本有限腺办,參見 Hadoop Java Versions焰手。Hadoop 2.0.x 至 2.x 支持 Java 7 和 Java 8;而 Hadoop 3.x 目前僅支持 Java 8怀喉,請(qǐng)大家注意 Java 的版本不要過低或過高书妻。打開 Terminal 輸入以下代碼查看 Java 的版本:

  • Terminal 可用快捷鍵 command+space 中搜索 "terminal" 打開。
$ java -version

如果已經(jīng)裝了Java躬拢,你會(huì)看到類似醬紫結(jié)果:

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

如果沒有躲履,會(huì)要求你安裝,你可以去這里下載 Java SE Downloads聊闯,或者用 Homebrew 安裝工猜。我是用 Homebrew 安裝了 Java 8。

  • 在上面的鏈接中有 Homebrew 的安裝和使用方法菱蔬,這里簡(jiǎn)單說一下篷帅,依次輸入下面兩行代碼,第一個(gè)用來安裝 Homebrew汗销,第二個(gè)用來安裝 Java 8犹褒。安裝 Java 8 時(shí)注意不要直接使用 brew install java抵窒,這樣會(huì)安裝最新版本的 Java弛针,而 Hadoop 暫時(shí)不支持較新版本的 Java。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
$ brew cask install caskroom/versions/java8

b) SSH

首先在系統(tǒng)里打開遠(yuǎn)程登錄李皇,位置在 System Preference -> Sharing 中削茁,左邊勾選 Remote Login,右邊選擇 All Users掉房。

  • 系統(tǒng)偏好可用快捷鍵 command+space 中搜索 "System Preference" 打開茧跋。

在 Terminal 里輸入以下代碼查看能不能免密 ssh 到 localhost:

$ ssh localhost

可以的話會(huì)返回類似如下結(jié)果:

Last login: Sat Mar  4 19:52:15 2017

如果不行輸入:

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

2. DOWNLOAD HADOOP 下載 Hadoop

官方鏡像 下載 hadoop-3.0.0-alpha2 的壓縮包,然后解壓到你愛的路徑卓囚。

  • 如果用 Homebrew 目前會(huì)自動(dòng)安裝 Hadoop 2.7.3 版本瘾杭,且安裝路徑為 /usr/local/Cellar/Hadoop,為下文敘述方便我們采用直接下載的方式哪亿。

3. CONFIGURATION 配置

還記得你解壓的 Hadoop 包嗎粥烁?找到它,進(jìn)入 etc/hadoop/ 下蝇棉,我們需要對(duì)其中的文件做一些改動(dòng)讨阻。我是用 Sublime Text 編輯的,強(qiáng)烈推薦篡殷。也可以在 Terminal 中用 nano 命令編輯钝吮,新手不推薦。

a) hadoop-env.sh

輸入以下代碼看看你把 Java 裝到哪里了:

$ /usr/libexec/java_home

你會(huì)看到類似醬紫結(jié)果:

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

打開 hadoop-env.sh 文件(位置 etc/hadoop/),找到 # export JAVA_HOME=奇瘦,改參數(shù)如下:

export JAVA_HOME={your java home directory}
  • {your java home directory} 改成你上面查到的 Java 路徑棘催,記得去掉注釋 #。比如 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home链患。

然后進(jìn)到 Hadoop 解壓包所在的路徑:

$ cd {your hadoop distribution directory}
  • {your hadoop distribution directory} 改成你解壓的 Hadoop 路徑巧鸭,比如 cd /Users/Tracy/Desktop/HADOOP/hadoop-3.0.0-alpha2孵运。
  • 一個(gè)簡(jiǎn)單的方式知道你的 Hadoop 路徑:查看 hadoop-3.0.0-alpha2 文件夾里的任意文件或子文件夾的信息辩稽。比如摄闸,右鍵單擊 etc 文件夾窿给,選擇 Get Info斥杜,直接復(fù)制路徑 Where 的內(nèi)容即可试躏,Terminal 會(huì)自動(dòng)轉(zhuǎn)化為正確的形式裆装。

接著輸入以下代碼:

$ bin/hadoop

你應(yīng)該會(huì)看到一段關(guān)于 Hadoop 的各種信息产禾。

接下來你就可以建立以下三種模式的 Hadoop 集群了:

  1. Standalone mode 獨(dú)立式
  2. Pseudo-distributed mode 偽分布式
  3. fully-distributed mode 全分布式

我們建立第二種明棍,讓 Hadoop 做為后臺(tái)應(yīng)用運(yùn)行在本地機(jī)器乡革,模擬小集群。

b) core-site.xml

打開 core-site.xml 文件(位置 etc/hadoop/)摊腋,改參數(shù)如下:

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

c) hdfs-site.xml

打開 hdfs-site.xml 文件(位置 etc/hadoop/)沸版,改參數(shù)如下:

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

d) mapred-site.xml

打開 mapred-site.xml 文件(位置 etc/hadoop/),改參數(shù)如下:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • 如果文件后綴是 .xml.example兴蒸,改為 .xml视粮。

e) yarn-site.xml

打開 yarn-site.xml 文件(位置 etc/hadoop/),改參數(shù)如下:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

4. EXECUTION 走你

接下來就是格式化后啟動(dòng) HDFS 和 YARN橙凳,先輸入以下代碼定位到你的 Hadoop 路徑:

$ cd {your hadoop distribution directory}
  • your hadoop distribution directory 改成你解壓的 Hadoop 路徑蕾殴,要點(diǎn)參考 3. CONFIGURATION 配置。

格式化文件系統(tǒng):

$ bin/hdfs namenode -format

啟動(dòng) NameNode 和 DataNode:

$ sbin/start-dfs.sh

現(xiàn)在你應(yīng)該可以在瀏覽器中打開下面的鏈接看到親切的 Overview 界面了:

NameNode - http://localhost:9870

讓 HDFS 可以被用來執(zhí)行 MapReduce jobs:

$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
  • <username> 改成你的用戶名岛啸,記得去掉 <> 钓觉。

啟動(dòng) ResourceManager 和 NodeManager:

$ sbin/start-yarn.sh

現(xiàn)在你應(yīng)該可以在瀏覽器中打開下面的鏈接看到親切的 All Applications 界面了:

ResourceManager - http://localhost:8088

拷點(diǎn)文件,跑個(gè)栗子:

$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0-alpha2.jar grep input output 'dfs[a-z.]+'

你應(yīng)該能看到諸如下面的反饋結(jié)果:

2017-03-04 21:52:37,041 INFO mapreduce.Job:  map 0% reduce 0%
2017-03-04 21:52:42,097 INFO mapreduce.Job:  map 100% reduce 0%
2017-03-04 21:52:48,158 INFO mapreduce.Job:  map 100% reduce 100%
2017-03-04 21:52:48,170 INFO mapreduce.Job: Job job_1488635356409_0002 completed successfully

檢查一下輸出:

$ bin/hdfs dfs -get output output
$ cat output/*

或者

$ bin/hdfs dfs -cat output/*

看到如下結(jié)果:

1   dfsadmin
1   dfs.replication

玩累了就輸入以下代碼停止:

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

You are all done 全劇終

作為新手坚踩,小狼也折騰了半天荡灾,發(fā)現(xiàn)網(wǎng)上很多代碼貼了都不能直接用,期間也走過不少彎路瞬铸。主要因?yàn)槟切┐a里面包含了一些原作者的安裝信息批幌,比如用戶名和路徑,以及一些不必要的額外設(shè)置赴捞。

會(huì)者不難逼裆,難者不會(huì),可能一些簡(jiǎn)單的代碼修改對(duì)于不會(huì)編程的人來說都不簡(jiǎn)單赦政。小狼力求在本文中列出絕大部分新手安裝 Hadoop 時(shí)會(huì)遇到的困惑胜宇,希望大家互相學(xué)習(xí)耀怜,共同進(jìn)步。另外桐愉,建議大家在百度前首先參考官方文檔财破,會(huì)節(jié)省大量時(shí)間。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末从诲,一起剝皮案震驚了整個(gè)濱河市左痢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌系洛,老刑警劉巖俊性,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異描扯,居然都是意外死亡定页,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門绽诚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來典徊,“玉大人,你說我怎么就攤上這事恩够∽渎洌” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蜂桶,是天一觀的道長(zhǎng)儡毕。 經(jīng)常有香客問我,道長(zhǎng)屎飘,這世上最難降的妖魔是什么妥曲? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任贾费,我火速辦了婚禮钦购,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘褂萧。我一直安慰自己押桃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布导犹。 她就那樣靜靜地躺著唱凯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谎痢。 梳的紋絲不亂的頭發(fā)上磕昼,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音节猿,去河邊找鬼票从。 笑死漫雕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的峰鄙。 我是一名探鬼主播浸间,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼吟榴!你這毒婦竟也來了魁蒜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤吩翻,失蹤者是張志新(化名)和其女友劉穎兜看,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狭瞎,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铣减,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脚作。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葫哗。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖球涛,靈堂內(nèi)的尸體忽然破棺而出劣针,到底是詐尸還是另有隱情,我是刑警寧澤亿扁,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布捺典,位于F島的核電站,受9級(jí)特大地震影響从祝,放射性物質(zhì)發(fā)生泄漏襟己。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一牍陌、第九天 我趴在偏房一處隱蔽的房頂上張望擎浴。 院中可真熱鬧,春花似錦毒涧、人聲如沸贮预。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仿吞。三九已至,卻和暖如春捡偏,著一層夾襖步出監(jiān)牢的瞬間唤冈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工银伟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留你虹,地道東北人凉当。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像售葡,于是被迫代替她去往敵國和親看杭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容