Hadoop 单机版和伪分布式版安装

时间:2021-08-29 13:49:21

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 拆分成独立的守护进程。
架构如下:
Hadoop 单机版和伪分布式版安装

有一个全局的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