docker部署HadoopHBase环境(Centos7系统)

Posted u010588886

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker部署HadoopHBase环境(Centos7系统)相关的知识,希望对你有一定的参考价值。

目录

一、安装docker

1. 下载离线包

2. 解压

3. 将解压后的文件夹复制到 /usr/local 目录

4. 将docker注册为系统service

5. 启动docker服务

6. 查看docker运行状态

7. 设置开机启动

8. 拉取docker镜像(Ubuntu系统)

9. 创建并运行一个容器

二、docker部署hadoop

1. 下载hadoop软件包

2.将软件包拷贝到docker容器内部

3.进入docker容器内部

4. 解压软件包

5. 将解压后的文件夹复制到 /usr/local 目录

6. 配置JAVA_HOME变量

7. 部署hadoop的三种运行模式

7.1 独立模式(默认配置)

 7.2 伪分布模式

7.3 全分布集群模式


一、安装docker

Docker命令手册:Docker 手册 - docker动态 - docker中文社区

1. 下载离线包

Index of linux/static/stable/x86_64/

2. 解压

tar -xzvf docker-18.06.3-ce.tgz

(ce版本表示社区免费版,详细说明 docker带ce和不带ce的区别-Docker-PHP中文网

3. 将解压后的文件夹复制到 /usr/local 目录

cp docker-18.06.3-ce /usr/local

4. 将docker注册为系统service

在此目录下 /usr/lib/systemd/system 创建docker.service文件,vim /usr/lib/systemd/system/docker.service,复制下面的内容到docker.service文件,保存退出

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.

# Only systemd 226 and above support this version.

#TasksMax=infinity

TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

# restart the docker process if it exits prematurely

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

 

[Install]

WantedBy=multi-user.target

5. 启动docker服务

systemctl start docker

6. 查看docker运行状态

systemctl status docker

7. 设置开机启动

systemctl enable docker.service

8. 拉取docker镜像(Ubuntu系统)

docker pull ubuntu

docker镜像中心:Docker Hub

9. 创建并运行一个容器

docker run -itd --net=hadoop -p 8088:8088 -p 9870:9870 --name hadoop-master --hostname hadoop-master ubuntu

参数说明:

--net  设置容器网络,自己定义一个网络名称即可

-p 映射容器和本地系统的端口,映射后访问本地系统端口就相当于访问容器内部端口

--name 容器名称

--hostname 容器主机名称

参考文章:离线部署docker_千里之行始于足下-CSDN博客_docker离线安装部署

二、docker部署hadoop

部署hadoop需先自行安装 jdk 和 ssh 软件包

1. 下载hadoop软件包

Index of /dist/hadoop/common

注:自己选择合适的版本

2.将软件包拷贝到docker容器内部

docker cp hadoop-3.3.1.tar.gz 容器名称:/home

3.进入docker容器内部

docker exec -it 容器名称/容器id /bin/bash

4. 解压软件包

tar -xzvf hadoop-3.3.1.tar.gz

5. 将解压后的文件夹复制到 /usr/local 目录

cp hadoop-3.3.1 /usr/local

6. 配置JAVA_HOME变量

进入hadoop配置文件目录 /usr/local/hadoop/etc/hadoop,编辑hadoop-env.sh 配置文件,增加JAVA_HOME环境变量配置

export JAVA_HOME=“jdk根目录”

保存退出

7. 部署hadoop的三种运行模式

7.1 独立模式(默认配置)

默认情况下,Hadoop配置运行在“非分布式模式”,作为一个单独的Java进程,有助于开发调试。

此模式下无需修改默认配置文件,可直接执行hadoop自带的mapreduce例子测试。 

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

 7.2 伪分布模式

Hadoop也能以“伪分布模式”运行在一个single-node上,Hadoop deamon运行在不同的Java进程。

修改配置文件

Hadoop/etc/hadoop/core-site.xml

链接:core-site.xml 详细配置参数说明

fs.defaultFS :设置Hadoop文件系统地址

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

Hadoop/etc/hadoop/hdfs-site.xml:

链接:hdfs-site.xml 详细配置参数说明

dfs.replication :设置数据块副本数量为1

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

 设置 SSH 免密码登录(必须,Hadoop通过ssh对节点进行管理

使用以下命令检查是否已配置免密码模式

  $ ssh localhost

如未配置,可按照以下命令进行配置

  $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  $ chmod 0600 ~/.ssh/authorized_keys

启动Hadoop

1.格式化文件系统

  $ bin/hdfs namenode -format

2.启动 NameNode 进程和 DataNode 进程

  $ sbin/start-dfs.sh

hadoop默认 log 输出写入路径是 Hadoop/logs 文件夹

3.通过web浏览器访问 NameNode,默认接口地址为 :http://localhost:9870

4.创建 HDFS 目录(Hadoop文件系统目录),执行MapReduce Job

 $ bin/hdfs dfs -mkdir /user
 $ bin/hdfs dfs -mkdir /user/<username>

5.拷贝 input 到 HDFS

 $ bin/hdfs dfs -mkdir input
 $ bin/hdfs dfs -put etc/hadoop/*.xml input

6.运行Hadoop examples

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[a-z.]+'

7.检查 output 目录下文件,将 output 目录从HDFS拷贝到本地文件系统进行检查

$ bin/hdfs dfs -get output output
$ cat output/*

或者直接在HDFS上查看

  $ bin/hdfs dfs -cat output/*

8.关闭Hadoop进程

$ sbin/stop-dfs.sh

Yarn(资源协调者) 运行在 single-node 

MapReduce Job在伪分布模式下也可以通过 Yarn(资源协调者)运行任务,需要配置一些参数,还有,还需要启动 ResourceManager 和 NodeManager 进程。

1.修改配置文件

Hadoop/etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

 Hadoop/etc/hadoop/yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

2.启动 ResourceManager 和 NodeManager 进程

$ sbin/start-yarn.sh

3.通过web浏览器访问 ResourceManager;默认地址为:http://localhost:8088/

4.运行MapReduce Job

Yarn与Hadoop 执行 MapReduce Job 命令是一样的,参照上面

5.关闭ResourceManager 和 NodeManager 进程

$ sbin/stop-yarn.sh

7.3 全分布集群模式

Hadoop全分布式配置部署(官方英文教程)

 

以上是关于docker部署HadoopHBase环境(Centos7系统)的主要内容,如果未能解决你的问题,请参考以下文章

设计与开发一款简单易用的Web报表工具(支持常用关系数据及hadoophbase等)

Docker的安装和启动

spring boot hello and docker

个人Hadoop集群部署

espidf docker 环境部署

Docker 学习笔记 - 安装