关键词:
前言
本文主要讲,基于Docker在本地快速搭建一个Hadoop 2.7.2集群和Flink 1.11.2运行环境,用于日常Flink任务运行测试。
前任栽树,后人乘凉,我们直接用Docker Hadoop镜像kiwenlau/hadoop-cluster-docker来搭建,这个镜像内已经配置部署好了Hadoop 2.7.2,感谢前辈们造好轮子。
该Docker Hadoop镜像优点:基于Docker快速搭建多节点Hadoop集群
我们要搭建一个3节点的Hadoop集群,集群架构如下图,一个主节点hadoop-master,两个数据节点hadoop-slave1和hadoop-slave2。每个Hadoop节点运行在一个Docker容器中,容器之间互相连通,构成一个Hadoop集群。
还不熟悉Docker的可以参见:菜鸟教程-Docker教程
搭建过程部分搬运自镜像作者教程:基于Docker搭建Hadoop集群之升级版
搭建集群
1.下载Docker镜像
sudo docker pull kiwenlau/hadoop:1.0
2.下载GitHub仓库
git clone https://github.com/kiwenlau/hadoop-cluster-docker
3.创建Hadoop网络
sudo docker network create --driver=bridge hadoop
4.运行Docker容器
cd hadoop-cluster-docker
./start-container.sh
运行结果
start hadoop-master container...
start hadoop-slave1 container...
start hadoop-slave2 container...
root@hadoop-master:~#
启动了3个容器,1个master, 2个slave
运行后就进入了hadoop-master容器的/root目录,我们在目录下新建一个自己的文件夹shadow
这时候不要着急启动Hadoop集群,我们先升级一下环境配置
环境升级
1.更新包
apt-get update
apt-get install vim
2.升级JDK
将JDK 1.7升级到JDK 1.8,先去官网下载一个JDK 1.8:jdk-8u261-linux-x64.tar.gz
从本地拷贝JDK 1.8到Docker容器hadoop-master
docker cp jdk-8u261-linux-x64.tar.gz hadoop-master:/root/shadow
解压升级
tar -zxvf jdk-8u261-linux-x64.tar.gz
sudo update-alternatives --install /usr/bin/java java /root/shadow/jdk1.8.0_261/bin/java 300
sudo update-alternatives --config java
sudo update-alternatives --install /usr/bin/javac javac /root/shadow/jdk1.8.0_261/bin/javac 300
sudo update-alternatives --config javac
java -version
javac -version
卸载JDK1.7:删除JDK1.7的目录即可
3.配置环境变量
vi ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath)
export JAVA_HOME=/root/shadow/jdk1.8.0_261
export JAVA=/root/shadow/jdk1.8.0_261/bin/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASS_PATH:$HADOOP_CLASSPATH
source ~/.bashrc
4.修改集群启动脚本
vi start-hadoop.sh
关闭Hadoop安全模式,末尾加上:hadoop dfsadmin -safemode leave
配置Hadoop
修改Hadoop配置,Hadoop配置路径:/usr/local/hadoop/etc/hadoop
core-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop/journal</value>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
<value>3600</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///root/hdfs/namenode</value>
<description>NameNode directory for namespace and transaction logs storage.</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///root/hdfs/datanode</value>
<description>DataNode directory</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.safemode.threshold.pct</name>
<value>1</value>
</property>
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
</property>
</configuration>
配置Flink
1.Flink官网下载:Flink 1.11.2
2.从本地拷贝JDK 1.8到Docker容器hadoop-master
docker cp flink-1.11.2-bin-scala_2.11.tgz hadoop-master:/root/shadow
3.修改Flink配置
tar -zxvf flink-1.11.2-bin-scala_2.11.tgz
cd flink-1.11.2/conf/
vi flink-conf.yaml
flink-conf.yaml
jobmanager.rpc.address: hadoop-master
jobmanager.memory.process.size: 1024m
taskmanager.memory.process.size: 1024m
taskmanager.numberOfTaskSlots: 2
parallelism.default: 2
打包镜像
1.将刚刚配置好的容器hadoop-master打包成新的镜像
docker commit -m="Hadoop&Flink" -a="shadow" fd5163c5baac kiwenlau/hadoop:1.1
2.删除正在运行的容器
cd hadoop-cluster-docker
./rm-container.sh
3.修改启动脚本,将镜像版本改为1.1
vi start-container.sh
start-container.sh
#!/bin/bash
# the default node number is 3
N=$1:-3
# start hadoop master container
sudo docker rm -f hadoop-master &> /dev/null
echo "start hadoop-master container..."
sudo docker run -itd \\
--net=hadoop \\
-p 50070:50070 \\
-p 8088:8088 \\
-p 8032:8032 \\
-p 9000:9000 \\
--name hadoop-master \\
--hostname hadoop-master \\
kiwenlau/hadoop:1.1 &> /dev/null
# start hadoop slave container
i=1
while [ $i -lt $N ]
do
sudo docker rm -f hadoop-slave$i &> /dev/null
echo "start hadoop-slave$i container..."
sudo docker run -itd \\
--net=hadoop \\
--name hadoop-slave$i \\
--hostname hadoop-slave$i \\
kiwenlau/hadoop:1.1 &> /dev/null
i=$(( $i + 1 ))
done
# get into hadoop master container
sudo docker exec -it hadoop-master bash
启动集群
1.运行Docker容器
./start-container.sh
运行后就进入了hadoop-master容器的/root目录
2.启动Hadoop集群
./start-hadoop.sh
打开本机浏览器,查看已经启动的Hadoop集群:Hadoop集群
查看集群概况:集群概况
然后就可以愉快的在Docker Hadoop集群中测试Flink任务了!
基于docker搭建hadoop跨主机集群
参考技术A摘要:本文是基于docker17.09.0搭建的hadoop2.7.2分布式跨主机集群,集群规模为一个master和两个salve,一共使用三台物理主机(两台或者多台物理机均可模拟),集群网络使用的是dockerswarm搭建。备注:中文社区中相关资料... 查看详情
基于docker快速搭建postgresql高可用方案(代码片段)
基于Docker快速搭建PostgreSQL高可用方案什么是PostgreSQLHA?此PostgreSQL集群解决方案包括PostgreSQL复制管理器(replicationmanager),这是一种用于管理PostgreSQL集群上的复制(replication)和故障转移(failover)的开源工具。获取此镜像获取Bit... 查看详情
基于docker快速搭建hive环境(代码片段)
一、概述Hive是什么?Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义... 查看详情
使用docker搭建hadoop集群和sparkonyarn
参考技术A选择uhopper定制的一系列hadoop生态镜像来搭建docker集群,这些镜像具体包括:上述关于端口映射部分,对每个容器端口的说明可参考docker-composeup-d在/etc/hosts下配置上述docker容器中出现的hostname,将这些域名都指向本机(宿... 查看详情
hadoop集群+spark集群搭建基于vmware虚拟机教程+安装运行docker(代码片段)
Hadoop集群+Spark集群搭建+安装运行Docker目录一、准备工作二、在虚拟机上安装CentOS7三、hdfs的环境准备四、hdfs配置文件的修改五、克隆(复制虚拟机)六、制作免密码登陆七、一行命令启动Hadoop集群八、Spark集群九... 查看详情
hadoop集群+spark集群搭建基于vmware虚拟机教程+安装运行docker(代码片段)
Hadoop集群+Spark集群搭建+安装运行Docker目录一、准备工作二、在虚拟机上安装CentOS7三、hdfs的环境准备四、hdfs配置文件的修改五、克隆(复制虚拟机)六、制作免密码登陆七、一行命令启动Hadoop集群八、Spark集群九... 查看详情
docker快速搭建hadoop集群(2023.3.27)(代码片段)
JDK下载地址hadoop下载地址DockerEngine下载概览1.构建java与hadoop的基础镜像新建目录mkdirdocker-hadoop使用rz-E上传jdk1.8的tar.gz压缩包和hadoop3.1.3的压缩包编辑Dockerfile文件,构建一个带ssh、java、hadoop、vim环境的centos镜像FROMcentos:7.5.1804#... 查看详情
【大数据】使用docker搭建hadoop集群
...doop/etc/hadoop/core-site.xml下的环境变量,使得hdfs可以链接到Docker集群的HDFS系统。设置环境变量 查看详情
docker下,极速搭建spark集群(含hdfs集群)(代码片段)
...快速搭建好,从而尽快投入编码和调试,今天咱们就借助docker,极速搭建和体验spark和hdfs的集群环境;实战环境信息以下是本次实战涉及的版本号:操作系统:CentOS7hadoop:2.8spark:2.3docker:17.03.2-ced 查看详情
基于docker的hadoop集群搭建(代码片段)
最近想学习如何使用hdfs来存储文件,在网上学习了一下,明确了HDFS(HadoopDistributeFileSystem分布式存储)、mapReduce(分布式计算)、YARN(YetAnotherResourceNegotiator资源管理)是hadoop的三大组成部分,... 查看详情
docker搭建zookeeper集群和kafka集群(代码片段)
docker搭建zookeeper集群安装docker-compose容器编排工具Compose介绍DockerCompose是Docker官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose... 查看详情
使用docker搭建本地hadoop集群(代码片段)
...拟机太慢了,而且还要开三个,太亏。刚好最近开始接触docker,准备就在docker的环境下搭建hadoop环境。安装docker可以考虑使用国内的加速镜像 daoc 查看详情
docker中hadoop集群搭建(代码片段)
使用腾讯云主机,docker构建集群测试环境。环境1、操作系统:CentOS7.264位网路设置hostnameIPcluster-master172.18.0.2cluster-slave1172.18.0.3cluster-slave2172.18.0.4cluster-slave3172.18.0.5Docker安装curl-sSLhttps://get.daocloud.io/docker 查看详情
使用docker快速搭建zookeeper和kafka集群(代码片段)
...rootOSX192.168.21.139【DHCP获取,会变动】实现目标kafka集群在docker网络中可用,和zookeeper处于同一网络宿主机可以访问zookeeper集群和kafka的brokerlistdocker重启时集群自动重启集群的数据文件映射到宿主机器目录中使用yml文件和$docker-comp... 查看详情
docker搭建hadoop和hive集群
一、安装docker并生成相关的镜像(1)安装docker安装docker教程https://www.runoob.com/docker/centos-docker-install.html只要在终端输入:sudodockerrunhello-world后出现如下图的内容就证明安装docker成功了(2)拉取CentOS镜像(Ub... 查看详情
docker——基于docker搭建mongodb分片集群(代码片段)
基于Docker搭建MongoDB分片集群基于Docker搭建MongoDB分片集群MongoDB分片简介MongoDB分片的优势MongoDB分片架构集群中数据分布Chunk分裂及迁移ChunksizeMongoDB分片集群搭建集群测试操作学习视频来源因为平台有相似的,发布为翻译-_-基... 查看详情
dockerxhadoop使用docker搭建hadoop集群(从零开始保姆级)(代码片段)
——步骤——0.背景1.创建出第一个容器2.为该容器配置java和hadoop环境3.配置允许外界通过ssh连接容器4.由该容器克隆出多个容器5.为各个容器配置ssh免密登录6.开始编写集群配置7.启动集群2021-10-6补充(务必看一下)好叭--... 查看详情
基于docker搭建activemq的高可用集群
最近刚开始玩Docker和ActiveMQ刚好学习到ActiveMQ集群的搭建,就将其记录了下来给有需要的人,也可以跟大家交流交流。 这里先感谢慕课网和http://blog.csdn.net/lifetragedy/article/details/51869032,在学习ActiveMQ有很大的帮助... 查看详情