1. 程式人生 > >Hadoop 單機版和偽分布式版安裝

Hadoop 單機版和偽分布式版安裝

single 是否 reference 問題 需要 gif -c mode www.

1 依賴項

  • java
  • ssh
$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
$ echo $JAVA_HOME
/path/to/jdk1.8.0_181

2 安裝和配置

這裏使用2.9.1版本:http://www.apache.org/dyn/closer.cgi/hadoop/common/

sudo useradd -m hadoop -s /bin/bash     # 創建hadoop用戶
sudo passwd hadoop          # 修改密碼
sudo adduser hadoop sudo    # 增加管理員權限

$ cat /etc/passwd |tail -n 1
hadoop:x:10003:10003::/home/hadoop:/bin/bash

$ ./bin/hadoop version
Hadoop 2.9.1
Subversion https://github.com/apache/hadoop.git -r e30710aea4e6e55e69372929106cf119af06fd0e

2.1 單機版配置

默認情況下Hadoop就是起一個java進程來運行單機版的,到這裏可以使用單機版了,不需要額外的配置。
官方grep例子

$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar #所有例子

$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep input output ‘dfs[a-z.]+‘
$ cat output/*

2.2 偽分布式配置

偽分布式模式下每個Hadoop守護進程都是一個獨立java進程。

etc/hadoop/core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/path/to/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/path/to/hdfs/data</value>
    </property>
</configuration>
$ cd /usr/local/hadoop
$ bin/hdfs namenode -format       # namenode 格式化
sbin/start-dfs.sh               # 開啟守護進程
./sbin/stop-dfs.sh # 關閉
jps                             # 判斷是否啟動成功

$ hdfs dfs -ls /  #列出/下所有文件
Found 2 items
drwxrwx---   - work supergroup          0 2018-10-11 22:04 /tmp
drwxr-xr-x   - work supergroup          0 2018-10-11 21:55 /user

2.3 yarn

./etc/hadoop/mapred-site.xml :

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

./etc/hadoop/yarn-site.xml:
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        </property>
</configuration>
$ ./sbin/start-yarn.sh      # 啟動YARN
$ ./sbin/mr-jobhistory-daemon.sh start historyserver  # 開啟歷史服務器,才能在Web中查看任務運行情況


$ jps
77153 DataNode
84726 JobHistoryServer
77003 NameNode
84269 ResourceManager # yarn
77341 SecondaryNameNode
56588 Jps
84572 NodeManager  # yarn 

resource manager 和 node manager共同組成 data-computation 框架。

yarn的理念是把 resource management 和 job scheduling/monitoring 拆分成獨立的守護進程。
架構如下:
技術分享圖片

有一個全局的RM,每個應用(單個job或者job組成的DAG)有一個AM。
RM包含2部分: Scheduler 和 ApplicationsManager。
其中Scheduler只負責資源分配,把 resource Container 作為和 memory, cpu, disk, network一樣的資源去管理。
AM負責接收提交的job,為了運行應用,要從 Scheduler 申請合適的 Container ,跟蹤其狀態,監控其進程,出問題要重啟。

ref: http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html

3 web UI

yarn: http://localhost:8088/cluster

hadoop: http://localhost:50070/dfshealth.html#tab-overview

References

  1. http://dblab.xmu.edu.cn/blog/install-hadoop-simplify/
  2. http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

Hadoop 單機版和偽分布式版安裝