一且预、安裝 Java 和 Hadoop
brew install Java
brew install Hadoop
java -version 和 hadoop version 來查看安裝版本及測試正常(PS:Java 和 Hadoop 的環(huán)境變量無需變動)
二魏宽、配置SSH(免密登錄)
因為安裝hadoop需要遠(yuǎn)程登入的功能,所以需要安裝ssh工具郑象,但Mac下自帶ssh肤频,所以不需要安裝ssh。
首先在系統(tǒng)里打開遠(yuǎn)程登錄魂莫,位置在 System Preferences -> Sharing 中淮菠,左邊勾選 Remote Login ,右邊選擇 Only there users存淫,并添加當(dāng)前用戶耘斩。
方法一:打開Terminal輸入 ssh localhost
,輸入 yes 然后輸入密碼確認(rèn)后桅咆,看到 Last login: 字樣為ssh成功括授。
方法二:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成公鑰和私鑰
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 將公鑰追加到文件
chmod 0600 ~/.ssh/authorized_keys # 修改相關(guān)權(quán)限
ssh localhost用來測試
三、修改配置文件
/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop 主要都在這個目錄下
- hadoop-env.sh
PS:親測無需修改 JAVA_HOME 和 HADOOP_HOME等變量(有如有問題可以修改測試轧邪,直接設(shè)置 JAVA_HOME 的路徑刽脖,不要用$JAVA_HOME 代替,因為 Hadoop 對系統(tǒng)變量的支持不是很好)忌愚。
查看Java安裝路徑:
/usr/libexec/java_home
vim hadoop-env.sh
找到 # 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 院水。
同理修改下面兩個參數(shù):
export HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec
根目錄應(yīng)該不是 /usr/local/Cellar/hadoop/3.1.1 ,可通過 hadoop version 來測試
export HADOOP_CONF_DIR=/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop
- core-site.xml
設(shè)置 Hadoop 的臨時目錄和文件系統(tǒng)简十,localhost:9000 表示本地主機(jī)檬某。如果使用遠(yuǎn)程主機(jī),要用相應(yīng)的 IP 地址來代替螟蝙,填寫遠(yuǎn)程主機(jī)的域名恢恼,則需要到 /etc/hosts 文件去做 DNS 映射。
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value> #可自行修改
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
fs.default.name 保存了NameNode的位置胰默,HDFS和MapReduce組件都需要用到它场斑,這就是它出現(xiàn)在core-site.xml 文件中而不是 hdfs-site.xml文件中的原因漓踢,在該處配置HDFS的地址和端口號。
- hdfs-site.xml
注意 name 和 data 的路徑都要替換成本地的路徑:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/name</value> #可自行修改
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/data</value> #可自行修改
</property>
</configuration>
變量dfs.replication指定了每個HDFS默認(rèn)備份方式通常為3, 由于我們只有一臺主機(jī)和一個偽分布式模式的DataNode漏隐,將此值修改為1喧半。
- mapred-site.xml
將 yarn 設(shè)置成數(shù)據(jù)處理框架:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- yarn-site.xml
配置數(shù)據(jù)的處理框架 yarn:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:9000</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>
四、運(yùn)行
接下來用到的命令青责,如 hadoop挺据、hdfs、start-all.sh脖隶、stop-all.sh 等扁耐,都已經(jīng)配置到環(huán)境變量里了,所以直接使用即可产阱。(查看位置:切換到 /usr/local/Cellar/hadoop/3.1.1/
或 /usr/local/Cellar/hadoop/3.1.1/libexec/
做葵,執(zhí)行根目錄下 bin 或 sbin 下的文件時,實際上執(zhí)行的是 libexec/bin或 libexec/sbin 下的文件心墅,查看腳本內(nèi)容即可發(fā)現(xiàn))。
1.格式化文檔系統(tǒng):hadoop namenode -format
或 hdfs namenode -format
2.啟動 NameNode 和 DataNode:
start-dfs.sh
現(xiàn)在可以看到 Overview 界面了榨乎,NameNode 和 DataNode - http://localhost:9870
PS:Hadoop3.0中namenode的默認(rèn)端口配置發(fā)生變化:從50070改為9870
3.啟動 ResourceManager 和 NodeManager:
start-yarn.sh
現(xiàn)在可以看到 All Applications 界面:
ResourceManager – http://localhost:8088
NodeManager – http://localhost:8042
在 Terminal執(zhí)行jps測試怎燥。
直接執(zhí)行 start-all.sh 等同于同時執(zhí)行 start-dfs.sh 和 start-yarn.sh。退出時執(zhí)行 stop-all.sh蜜暑,或者:stop-yarn.sh 和 stop-dfs.sh铐姚。
五、WARN(可忽略)
在log中會顯示警告 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
的提醒肛捍,是關(guān)于 Hadoop 本地庫的隐绵, Hadoop本地庫是為了提高效率或者某些不能用Java實現(xiàn)的功能組件庫。
六拙毫、基本操作
Hadoop 的安裝啟動就完成啦依许!接下來就可以通過一些 shell 命令來操作 Hadoop 下的文件了,例如:
hadoop fs -ls / #查看根目錄下的文件及文件夾
hadoop fs -mkdir -p /data #在根目錄下創(chuàng)建一個文件夾data(這個路徑是虛擬的缀蹄,隨便填寫峭跳,并不會在本機(jī)看到,可通過頁面你控制臺中 Utilities -> browse the file system 查看) PS: 2.x之后的版本命令需要加參數(shù) -p
hdfs dfs -put /root/data /data #上傳本地目錄文件到hadoop目錄
hdfs dfs -copyFromLocal /root/data/person.txt /data #copy本地文件到hadoop目錄
hadoop fs -rm /.../... #移除某個文件
hadoop fs -rm -r /... #及聯(lián)刪除文件夾
七缺前、常見錯誤
1.datanode沒啟動
建議直接把文件name 和 data下的文件刪了蛀醉,然后重啟hadoop。查看鏈接:https://blog.csdn.net/ludonqin/article/details/51396187
參考鏈接:
Mac 安裝 Hadoop 3.x
【干貨】簡單三步在Mac上安裝Hadoop
Mac OS X 上搭建 Hadoop 開發(fā)環(huán)境指南
Mac下使用homebrew安裝Hadoop-3.1.1記錄
【Hadoop踩雷】Mac下安裝Hadoop3以及Java版本問題