天天看點

Hadoop3-僞分布式模式安裝

今天無意間看到Hadoop3去年年底就release了,今天就準備裝個環境看看。

安裝配置

首先從下面的位址下載下傳安裝包

  • http://hadoop.apache.org/releases.html

這裡我下載下傳的是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狀态。

  • http://localhost:9870/

運作 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           

複制

啟動後可以通過下面位址檢視作業請求

  • http://192.168.0.192:8088/cluster

運作 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>           

複制

  • 參考: https://stackoverflow.com/questions/21005643/container-is-running-beyond-memory-limits