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 集群了:
- Standalone mode 獨(dú)立式
- Pseudo-distributed mode 偽分布式
- 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í)間。