docker部署HadoopHBase环境(Centos7系统)
Posted u010588886
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker部署HadoopHBase环境(Centos7系统)相关的知识,希望对你有一定的参考价值。
目录
一、安装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软件包
注:自己选择合适的版本
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
fs.defaultFS :设置Hadoop文件系统地址
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
Hadoop/etc/hadoop/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 全分布集群模式
以上是关于docker部署HadoopHBase环境(Centos7系统)的主要内容,如果未能解决你的问题,请参考以下文章