Mac下面配置hadoop 3.1.1
Java 版本 1.8.0_18
mac os 10.13.6
hadoop 版本: 3.1.1
安裝Java
首先要確定mac上是否安裝了Java環境, 在命令列輸入下面的語句就可以驗證並得到Java的版本。
java -version
如果沒有安裝好Java環境,網上有很多安裝Java的教程,大家可以去查閱。
安裝hadoop
在mac上brew很方便的對軟體進行安裝和解除安裝。
brew install hadoop
然後使用下面的命令,如果出現hadoop的版本資訊則表示安裝成功。
hadoop version
配置ssh環境
在terminal裡面輸入: ssh localhost
如果有錯誤提示資訊,表示當前使用者沒有許可權。這個多半是系統為安全考慮,預設設定的。
更改設定如下:進入system preference --> sharing --> 勾選remote login,並設定allow access for all users。
再次輸入“ssh localhost",再輸入密碼並確認之後,可以看到ssh成功。
如果不執行這一步,後面啟動hadoop時會出現Connection refused的錯誤。
配置hadoop
從命令列進入/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop,然後修改下面的檔案。
1、修改core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:8020</value> </property> <!--用來指定hadoop執行時產生檔案的存放目錄 自己建立--> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/Cellar/hadoop/tmp</value> </property> </configuration>
2、修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--不是root使用者也可以寫檔案到hdfs-->
<property>
<name>dfs.permissions</name>
<value>false</value> <!--關閉防火牆-->
</property>
<!--把路徑換成本地的name坐在位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/Cellar/hadoop/tmp/dfs/name</value>
</property>
<!--在本地新建一個存放hadoop資料的資料夾,然後將路徑在這裡配置一下-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/Cellar/hadoop/tmp/dfs/data</value>
</property>
</configuration>
3、修改 mapred-site.xml
<configuration>
<property>
<!--指定mapreduce執行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
</property>
</configuration>
然後輸入hdfs namenode -format 格式化namenode節點,看到下面的結果就說明成功了。
啟動hadoop
在sbin/目錄下輸入./start-dfs.sh啟動hdfs服務。然後,在瀏覽器中輸入http://localhost:9870/,出現以下介面就說明成功了。特別要注意的是這裡不是http://localhost:50070。輸入./stop-dfs.sh就可以停止服務。
啟動yarn服務
在sbin目錄下輸入./start-yarn.sh, 然後在瀏覽器中開啟http://localhost:8088/就會出現下圖的介面。用./stop-yarn.sh可以停止服務。
至此,配置就成功了。配置時有個警告,WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable,但是不會影響搭建。還沒有在上面執行例子,還不知道會不會有問題。