Apache Hadoop安装

 ·  ☕ 3  · 👀...

CentOS安装

准备环境

独立安装环境

主机名 IP 操作系统 角色
node1 192.168.0.11 CentOS7 本地模式运行hadoop,用于测试和开发环境

伪分布式安装环境

主机名 IP 操作系统 角色
node1 192.168.0.11 CentOS7 本地模式运行hadoop

完全分布式安装环境

主机名 IP 操作系统 角色
node1 192.168.0.11 CentOS7 NameNode
node2 192.168.0.12 CentOS7 DataNode
node3 192.168.0.13 CentOS7 DataNode
node4 192.168.0.14 CentOS7 DataNode
node5 192.168.0.15 CentOS7 SecondaryNamenode

先决条件

创建软件目录

1
2
$ mkdir /soft
$ chown user:group /soft

准备软件

软件 目录 说明
jdk /soft/jdk-8u211-linux-x64.tar.gz -
hadoop /soft/hadoop-3.2.0.tar.gz -

安装jdk

1
2
3
4
5
$ cd /soft/jdk-8u211-linux-x64.tar.gz
$ tar zxvf jdk-8u211-linux-x64.tar.gz
$ ln -s jdk1.8.0_211 jdk
$ ls -l
$ vi /etc/profile

在行尾添加

JAVA_HOME=/soft/jdk
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
1
2
3
$ source /etc/profile
$ echo $JAVA_HOME
$ java -version

独立安装Hadoop

1
2
3
4
5
$ cd /soft/
$ tar zxvf hadoop-3.2.0.tar.gz
$ ln -s hadoop-3.2.0 hadoop
$ ls -l
$ vi /etc/profile

在行尾添加或修改如下

JAVA_HOME=/soft/jdk
JRE_HOME=$JAVA_HOME/jre
HADOOP_HOME=/soft/hadoop
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME HADOOP_HOME PATH CLASSPATH
1
2
3
$ source /etc/profile
$ echo $HADOOP_HOME
$ hadoop version

独立安装Hadoop不需要做任何配置。

伪分布式安装Hadoop

配置hadoop

配置文件的目录在/soft/hadoop/etc/hadoop中。

core-site.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost/</value>
    </property>
</configuration>

hdfs-site.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

mapred-site.xml

1
2
3
4
5
6
7
8
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

yarn-site.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?xml version="1.0"?>
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>localhost</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

hadoop-env.sh

1
export JAVA_HOME=/soft/jdk

安装配置SSH

安装SSH

CentOS系统默认安装了openssh。

1
$ yum install openssh-server -y

配置SSH

默认的配置已可以正常工作。

# 修改 /etc/ssh/sshd_config
# 设置SSH的端口号是22(默认端口号为22)
Port=22  
# 启用SSH版本2协议
Protocol 2  
# 设置服务监听的地址
ListenAddress 192.168.0.11  
# 拒绝访问的用户(用空格隔开)
DenyUsers   user1 user2 foo  
# 允许访问的用户(用空格隔开)
AllowUsers  root osmond vivek  
# 禁止root用户登陆
PermitRootLogin  no  
# 用户登陆需要密码认证
PermitEmptyPasswords no  
# 启用口令认证方式
PasswordAuthentication  yes  

重启SSH

1
$ service sshd restart

配置免密登陆

1
2
3
4
5
6
# 生成密钥对
$ ssh-keygen -t rsa -P ''
# 配置本机免密登陆
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 测试本机免密登陆
$ ssh localhost

格式化HDFS文件系统

1
$ hadoop namenode -format

修改启动、停止脚本

在/hadoop/sbin路径下,将start-dfs.sh、stop-dfs.sh两个文件顶部添加以下参数:

1
2
3
4
5
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

start-yarn.sh,stop-yarn.sh顶部添加以下:

1
2
3
4
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

启动所有进程

1
2
3
4
$ cd /soft/hadoop/sbin/
$ start-all.sh
# 检查进程数量(5个)
$ jps

完全分布式安装Hadoop

完全分布式安装hadoop跟伪分布式相同,只是机器的数量不同。

Ubuntu安装

参考CentOS安装。

测试安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 查看当前Hadoop的环境变量
$ echo $HADOOP_HOME

# 查看当前安装的hadoop版本
$ hadoop version

# 检查进程数量(5个)
# 进程分别是:
    # NameNode
    # ResourceManager
    # SecondaryNameNode
    # NodeManager
    # DataNode
$ jps

管理

启动

1
$ start-all.sh

停止

1
$ stop-all.sh

查看进程

1
$ jps

查看文件系统(查看一级目录)

1
$ hadoop fs -ls /

查看文件系统(递归查看)

1
$ hadoop fs -lsr /

创建文件夹

1
$ hadoop fs -mkdir -p /user/centos/data

WebUI

标题 WebUI地址
访问hadoop hdfs http://localhost:50070
访问hadoop data node http://localhost:50075
访问hadoop 2nn http://localhost:50090

附录

Hadoop包含模块

模块名 说明
Hadoop Common 支持其它模块的工具模块
HDFS 分布式文件系统,提供了对应用程序数据的高吞吐量访问,包含:
NameNode(名称节点,简称NN,存放目录)
DataNode(数据节点,简称DN,存放数据)
SecondaryNamenode(辅助名称节点,简称2NN,存放数据备份)
Hadoop YARN 作业调度与集群资源管理的框架,包含:
ResourceManager(资源管理器,简称RM)
NodeManager(节点管理器,简称NM)
Hadoop MapReduce 基于YARN系统的对大数据集进行并行处理技术

Wanglibing
Wanglibing
Engineer,Lifelong learner