Hadoop3-偽分散式模式安裝
阿新 • • 發佈:2019-02-01
今天無意間看到Hadoop3去年年底就release了,今天就準備裝個環境看看。
安裝配置
首先從下面的地址下載安裝包
這裡我下載的是hadoop-3.0.0.tar.gz包,解壓安裝。
$ tar zxvf hadoop-3.0.0.tar.gz
$ cd hadoop-3.0.0/
編輯etc/hadoop/hadoop-env.sh檔案,設定JAVA_HOME環境變數,
export JAVA_HOME=/opt/jdk8
修改配置檔案 core-site.xml
<configuration>
<property>
<name> fs.defaultFS</name>
<value>hdfs://<hostname>:9000</value>
</property>
</configuration>
修改配置檔案 hdfs-site.xml,因為是偽分散式模式,所以設定複製為1。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
執行 HDFS
格式化 HDFS
第一次啟動 HDFS 時,需要做一次格式化才行。
$ bin/hdfs namenode -format
啟動 HDFS
$ sbin/start-dfs.sh
啟動 HDFS 後,可以通過瀏覽器訪問下面的地址檢視HDFS狀態。
執行 MapReduce 作業
先建立當前使用者在 HDFS 中的家目錄,如下
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
準備資料,執行測試並檢視結果
$ 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.jar grep input output 'dfs[a-z.]+'
$ bin/hdfs dfs -cat output/*
刪除上面測試結果
$ bin/hdfs dfs -rm output/*
$ bin/hdfs dfs -rmdir output/
停止 HDFS
$ sbin/stop-dfs.sh
執行 YARN
修改 etc/hadoop/mapred-site.xml 檔案
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/apps/hadoop-3.0.0</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/apps/hadoop-3.0.0</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/apps/hadoop-3.0.0</value>
</property>
</configuration>
修改 etc/hadoop/yarn-site.xml 檔案
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
啟動 YARN
$ sbin/start-yarn.sh
啟動後可以通過下面地址檢視作業請求
執行 MapReduce 作業
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
$ bin/hdfs dfs -cat output/*
停止 YARN
$ sbin/stop-yarn.sh
http://192.168.0.192:8088/cluster
問題
在測試YARN的過程中,開始總出現類似下面的錯誤,導致作業都執行失敗
[2018-01-30 22:40:02.211]Container [pid=22658,containerID=container_1517369701504_0003_01_000028] is running beyond virtual memory limits. Current usage: 87.9 MB of 1 GB physical memory used; 2.6 GB of 2.1 GB virtual memory used. Killing container.
最後發現是機器記憶體不夠,導致yarn的配置在我的機器上不合理,所以修改了一下 etc/hadoop/yarn-site.xml 檔案,新增下面兩個配置專案,然後重啟yarn就可以了。
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>