伪分布式部署

  • 以 IP 为 192.168.212.91 的虚拟机为例
  • 包下载地址:https://archive.apache.org/dist/

配置 java 运行环境

创建 hadoop 用户,并配置目录

1
2
3
4
5
6
7
8
9
sudo useradd -m -r hadoop -s /bin/bash

sudo mkdir -p /opt/hadoop
sudo chown -R hadoop.hadoop -R /opt/hadoop

sudo mkdir -p /data/hadoop/hdfs/name
sudo mkdir -p /data/hadoop/hdfs/data
sudo mkdir -p /data/hadoop/tmp
sudo chown -R hadoop.hadoop -R /data/hadoop

配置 Hadoop limits

1
2
3
4
5
$ sudo vi /etc/security/limits.conf
hadoop    soft    nproc       131072
hadoop    hard    nproc       131072
hadoop    soft    nofile       65536
hadoop    hard    nofile       65536

配置 hadoop 用户免密

1
2
3
4
sudo su - hadoop
ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

安装 hadoop(hadoop 用户下执行)

解压安装包

  • 上传 hadoop 安装包 hadoop-3.1.0.tar.gz 至用户家目录
1
tar -zxvf hadoop-3.1.0.tar.gz  -C /opt/hadoop/

配置环境变量

1
2
3
4
$ vi ~/.bashrc
export HADOOP_HOME=/opt/hadoop/hadoop-3.1.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
$ source  ~/.bashrc

修改配置

hadoop-env.sh

1
2
3
4
5
$ vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 配置 java home
export JAVA_HOME=/opt/jre/jre1.8.0_331
# 可以不配置默认为 22,如果 ssh 使用非 22 端口,必须配置此参数
export HADOOP_SSH_OPTS="-p 22"

core-site.xml

  • fs.defaultFS:指定临时文件路名
  • hadoop.tmp.dir:指定配置文件系统路径
1
vi $HADOOP_HOME/etc/hadoop/core-site.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/data/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

hdfs-site.xml

  • dfs.replication 为 1 表示副本数为 1
  • dfs.namenode.name.dir:namenode 存储路径
  • dfs.datanode.data.dir:datanode 存储路径
1
vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<configuration>
    <property>
            <name>dfs.replication</name>
            <value>1</value>
    </property>
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/data/hadoop/hdfs/name</value>
    </property>
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/data/hadoop/hdfs/data</value>
    </property>
</configuration>

mapred-site.xml

  • 配置 mapreduce 在 yarn 上运行
1
vi $HADOOP_HOME/etc/hadoop/mapred-site.xml 
1
2
3
4
5
6
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

yarn-site.xml

  • 指定reducer获取数据的方式
1
vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
1
2
3
4
5
6
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

格式化 HDFS 文件系统

1
hdfs namenode -format

启动 hadoop

1
2
cd $HADOOP_HOME
./sbin/start-all.sh
  • 验证 hadoop 进程
    • 有 jps 可用 jps 命令验证,无 jps 可以如下命令查询
1
2
3
4
5
6
$ ps aux |grep java|grep hadoop  |grep -v grep|awk -F '.' '{print $NF}'
NameNode
DataNode
SecondaryNameNode
ResourceManager
NodeManager
  • 通过网络验证,IP 改为主机 IP:http://192.168.212.91:8088/cluster