前言
CentOS下载地址
http://mirrors.aliyun.com/centos/7/isos/x86_64/
本地安装了Docker和VMware后,无法同时启动。
因为Docker和VMware都相当于Hypervisor,并且基于虚拟机属性需要获取对CPU等硬件的掌控权,因为在同一台机器上无法同时运行。
使用”添加或删除Windows组件“图形界面程序,在里面取消勾选Hyper-V。
取消之后要重启电脑,否则不生效。
注意
其他环境的高可用集群前提是Zookeeper的集群
本文所有的大数据软件都放在了下面的文件夹中
/data/tools/bigdata
服务器准备至少3台
1 | 192.168.7.101(hadoop01) |
查看主机名
1 | hostname |
Taier
文档:https://dtstack.github.io/Taier/docs/guides/introduction/
视频:https://www.bilibili.com/video/BV13L4y1L71w/
源码:https://github.com/DTStack/Taier
本文软件环境
- JDK 8u221
- zookeeper 3.7.1
- Hadoop 2.7.7
- Flink 1.12.7
安装JDK
官方下载JDK 网址
或者 链接:https://pan.baidu.com/s/1JdPCMMEq178hXV5V4Ild3Q 密码:03l1
比如下载的文件为jdk-8u221-linux-x64.rpm
更改文件权限
1 | chmod 755 jdk-8u221-linux-x64.rpm |
安装
1 | rpm -ivh jdk-8u221-linux-x64.rpm |
安装后的路径为/usr/java/jdk1.8.0_221-amd64
删除文件
1 | rm -rf jdk-8u221-linux-x64.rpm |
查询Java版本
1 | java -version |
查看JAVA_HOME
1 | echo $JAVA_HOME |
添加环境变量
1 | cd /etc/profile.d/ |
创建配置文件
1 | vi /etc/profile.d/jdk.sh |
加入:
1 | export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64 |
配置立即生效
1 | source /etc/profile |
查询java版本
1 | java -version |
查看java-home
1 | echo $JAVA_HOME |
创建目录
1 | ssh hadoop01 "mkdir -p /data/tools/bigdata" |
Zookeeper集群
集群最少为3个。
安装Zookeeper
kafka依赖zookeeper,安装包内已内置 使用内置的可以跳过该步骤
也可自己单独下载
https://zookeeper.apache.org/releases.html#download
我这里下载的是apache-zookeeper-3.7.1-bin.tar.gz
解压
1 | tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /data/tools/bigdata/ |
配置环境变量
添加环境变量
1 | cd /etc/profile.d/ |
创建配置文件
1 | vi /etc/profile.d/zk.sh |
加入:
1 | export ZK_HOME=/data/tools/bigdata/apache-zookeeper-3.7.1-bin |
配置立即生效
1 | source /etc/profile |
查看ZK_HOME
1 | echo $ZK_HOME |
创建目录
1 | mkdir -p /data/tools/bigdata/zdata/zk_data |
另两台创建目录
1 | ssh hadoop02 "mkdir -p /data/tools/bigdata/zdata/zk_data" |
配置修改
conf配置目录下的zoo_sample.cfg
修改为zoo.cfg
修改
1 | dataDir=/data/tools/bigdata/zdata/zk_data |
添加
1 | # server.1 这个1是服务器的标识,可以是任意有效数字,标识这是第几个服务器节点,这个标识要写到dataDir目录下面myid文件里 |
分别在三台主机的 dataDir
目录下新建 myid
文件,并写入对应的节点标识。Zookeeper 集群通过 myid
文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出 Leader 节点。
创建并写入节点标识到 myid
文件:
1 | ssh hadoop01 "echo 1 > /data/tools/bigdata/zdata/zk_data/myid" |
配置分发
1 | ha-fenfa.sh $ZK_HOME |
启动ZK
启动ZK
1 | bash $ZK_HOME/bin/zkServer.sh start |
查看状态
1 | zkServer.sh status |
或者
用自定义脚本
1 | ha-zk.sh start |
全部启动成功后我们可以看到
1个leader,2个follower,就说明集群配置成功了。
访问
进入
1 | bash $ZK_HOME/bin/zkCli.sh |
输入命令
1 | #查看zk的根目录kafka相关节点 |
使用到的端口
搭建集群时配置文件zoo.cfg中会出现这样的配置
1 | clientPort=2181 |
其中
2181:Client使用
2888:集群内部通讯使用(Leader监听此端口)
- 3888:选举Leader使用
Hadoop集群
下载
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/
解压
1 | tar -zxvf hadoop-2.7.7.tar.gz -C /data/tools/bigdata/ |
配置环境变量
1 | cd /etc/profile.d/ |
创建配置文件
1 | vi /etc/profile.d/hadoop.sh |
内容设置为
1 | #HADOOP_HOME |
配置生效
1 | source /etc/profile |
查看是否生效
1 | echo $HADOOP_HOME |
环境变量分发
1 | ha-fenfa.sh /etc/profile.d |
修改配置文件
进入配置文件目录
1 | cd $HADOOP_HOME/etc/hadoop |
hadoop-env.sh
将原本的JAVA_HOME 替换为绝对路径就可以了
1 | #export JAVA_HOME=${JAVA_HOME} |
注意
虽然系统已经设置
JAVA_HOME
,但是运行时依旧无法找到,所以配置的绝对路径一定要配置,否则会产生运行正常,但是远程连接服务器的时候报
Error:JAVA_HOME is not set and could not be found
core-site.xml
注意文件的编码要是utf8
1 |
|
hdfs-site.xml
1 |
|
mapred-site.xml
mapred-site.xml.template 重命名为 mapred-site.xml
1 |
|
yarn-site.xml
1 |
|
注意其中下面的配置项可以不用配置
1 | <property> |
配置说明
是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
在这里面我们需要关闭,因为对于flink使用yarn模式下,很容易内存超标,这个时候yarn会自动杀掉job
slaves
1 | hadoop01 |
log4j.properties
剔除警告(可选):
添加
1 | log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR |
问题
Could not deploy Yarn job cluster
解决:修改内存大小设置
yarn.scheduler.maximum-allocation-mb
yarn.nodemanager.resource.memory-mb
yarn-site.xml
默认的值
1 | <property> |
可以修改为
1 | <property> |
删除日志
刚开始部署时每次启动前我们可以删除之前的日志文件,方便排查问题。
1 | ha-call.sh "rm -rf $HADOOP_HOME/logs/*" |
配置分发
1 | ha-fenfa.sh $HADOOP_HOME |
初始化集群
只用执行一次
(1). 启动3个Zookeeper
已启动则跳过
1 | ha-call.sh "zkServer.sh start" |
(2). 启动3个JournalNode
JournalNode的作用:NameNode之间共享数据
1 | ha-call.sh "hadoop-daemon.sh start journalnode" |
(3). 格式化NameNode
格式化前删除之前的文件
1 | ha-call.sh "rm -rf /data/tools/bigdata/zdata/hadoop/*" |
添加文件夹
1 | ha-call.sh "mkdir -p /data/tools/bigdata/zdata/hadoop/tmp" |
仅hadoop01
1 | sudo chmod -R 755 /data/tools/bigdata/zdata/hadoop |
这个操作主要是创建fsimage和edits文件。
只要看到信息中有一句关键:
22/11/08 08:53:30 INFO common.Storage: Storage directory /data/tools/bigdata/zdata/hadoop/dfs/namenode_data has been successfully formatted.
22/11/08 08:53:30 INFO common.Storage: Storage directory /data/tools/bigdata/zdata/hadoop/dfs/edits has been successfully formatted.
则格式化成功.
(4). 复制hadoop01上的NameNode的元数据到hadoop02
1 | scp -r /data/tools/bigdata/zdata/hadoop/dfs/namenode_data/current/ root@hadoop02:/data/tools/bigdata/zdata/hadoop/dfs/namenode_data/ |
(5). 在NameNode节点(hadoop01或hadoop02)格式化zkfc
1 | ssh hadoop01 "hdfs zkfc -formatZK" |
(6). 停止3个JournalNode
JournalNode的作用:NameNode之间共享数据
1 | ha-call.sh "hadoop-daemon.sh stop journalnode" |
启动集群
可以删除之前的日志文件,方便排查问题。
1 | ha-call.sh "rm -rf $HADOOP_HOME/logs/*" |
(1). 在hadoop01上启动HDFS相关服务
1 | ssh hadoop01 "start-dfs.sh" |
对应日志
1 | Starting namenodes on [hadoop01 hadoop02] |
(2). 在hadoop03上启动YARN相关服务
1 | ssh hadoop03 "start-yarn.sh" |
(3). 最后单独启动hadoop01的历史任务服务器和hadoop02的ResourceManager
1 | ssh hadoop01 "mr-jobhistory-daemon.sh start historyserver" |
或者
用自定义脚本
1 | ha-hadoop.sh start |
查看集群
1 | --------hadoop01查看ha-hadoop集群进程-------- |
【查看NameNode的状态】
1 | hdfs haadmin -getServiceState nn1 |
可以看到一个是active
一个是standby
【查看ResourceManager的状态】
1 | yarn rmadmin -getServiceState rm1 |
可以看到一个是active
一个是standby
访问
我的服务器的IP为 192.168.7.101
HDFS监控页面查询:
查看文件可以访问这个地址
http://192.168.7.101:50070/explorer.html#/
http://192.168.7.102:50070/explorer.html#/
Yarn监控页面查询:
http://192.168.7.102:8088/cluster
http://192.168.7.103:8088/cluster
Flink on Yarn
默认情况下,每个 Flink 集群只有一个 JobManager,这将导致单点故障(SPOF),如果这个 JobManager 挂了,则不能提交新的任务,并且运行中的程序也会失败。使用JobManager HA,集群可以从 JobManager 故障中恢复,从而避免单点故障。
用户可以在Standalone 或 Flink on Yarn 集群模式下配置 Flink 集群 HA(高可用性)。
Flink 的HA需要Zookeeper和HDFS,因此首先要安装启动 zk、hdfs。
下载
下载地址
https://archive.apache.org/dist/flink/
这里下载1.12.7版本
https://archive.apache.org/dist/flink/flink-1.12.7/
https://archive.apache.org/dist/flink/flink-1.12.7/flink-1.12.7-bin-scala_2.12.tgz
解压
1 | tar zxvf flink-1.12.7-bin-scala_2.12.gz -C /data/tools/bigdata/ |
配置环境变量
创建配置文件
1 | vi /etc/profile.d/flink.sh |
内容设置为
1 | #FLINK_HOME |
配置生效
1 | source /etc/profile |
查看是否生效
1 | echo $FLINK_HOME |
创建目录
1 | mkdir -p /data/tools/bigdata/zdata/flink |
其他服务器上创建文件夹
1 | ssh hadoop02 "mkdir -p /data/tools/bigdata/zdata/flink" |
Hadoop中创建目录
1 | hdfs dfs -mkdir /flink112 |
修改配置
Hadoop中
yarn-site.xml添加
1 | <property> |
hadoop配置分发
1 | ha-fenfa.sh $HADOOP_HOME |
修改flink/conf/
- flink-conf.yaml
- masters
- workers
flink-conf.yaml
1 | # 1. 配置jobmanager rpc 地址 |
如果使用Yarn
添加
1 | yarn.application-attempts: 10 |
masters
1 | hadoop01:8081 |
workers
1 | hadoop01 |
zoo.cfg
将内容修改为:
1 | dataDir=/data/tools/bigdata/zdata/flink |
作业归档需要记录在hdfs上,但是当前版本的flink把hadoop的一些依赖删除了,需要手动将jar包放到lib目录下 ,这里我用的是
https://repo.maven.apache.org/maven2/org/apache/flink/flink-shaded-hadoop-2-uber/
下载地址
删除日志
刚开始部署时每次启动前我们可以删除之前的日志文件,方便排查问题。
1 | ha-call.sh "rm -rf $FLINK_HOME/logs/*" |
配置分发
1 | ha-fenfa.sh $FLINK_HOME |
启动/停止
创建一个YARN模式的flink集群:
1 | bash $FLINK_HOME/bin/yarn-session.sh -n 4 -jm 1024m -tm 4096m --detached |
申请资源
1 | bash $FLINK_HOME/bin/yarn-session.sh -nm mytest -n 2 |
查看申请的资源
使用命令查看
1 | yarn application --list |
启动
1 | bash $FLINK_HOME/bin/start-cluster.sh |
停止
1 | bash $FLINK_HOME/bin/stop-cluster.sh |
或者
用自定义脚本
1 | ha-flink.sh start |
Master应该有StandaloneSessionClusterEntrypoint
Slave应该有TaskManagerRunner
访问
Flink有个UI界面,可以用于监控Flilnk的job运行状态
http://192.168.7.101:8081/
运行Jar
1 | hdfs://hdfsns/bigdata_study/stu_list.txt |
1 | flink run -m yarn-cluster -ynm mytest ./WordCount.jar "hdfs://hdfsns/bigdata_study/stu_list.txt" |
Docker
安装
搜索
1 | yum search docker |
安装
1 | yum install -y docker |
启动
1 | systemctl start docker |
查看版本
1 | docker version |
开机自启
1 | systemctl enable docker |
修改默认路径
0) 停止服务
1 | systemctl stop docker |
1) 修改配置
指定镜像和容器存放路径的参数是--graph=/var/lib/docker
位置 /etc/sysconfig/docker
添加下面这行
1 | vi /etc/sysconfig/docker |
修改
1 | OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false' |
修改为
1 | OPTIONS='--graph=/data/tools/docker --selinux-enabled --log-driver=journald --signature-verification=false' |
2) 修改完成后重载配置文件
1 | sudo systemctl daemon-reload |
3) 重启docker服务
1 | sudo systemctl restart docker.service |
4) 查看信息
1 | sudo docker info | grep "Docker Root Dir" |
出现以下则证明成功了
1 | Docker Root Dir: /data/tools/docker |
设置镜像源
针对Docker客户端版本大于 1.10.0 的用户
创建或修改 /etc/docker/daemon.json
文件
1 | vi /etc/docker/daemon.json |
添加或修改
1 | { |
重启Docker
1 | systemctl daemon-reload |
docker-compose
下载docker-compose:
1 | curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
然后赋权限:
1 | chmod +x /usr/local/bin/docker-compose |
最后查看版本:
1 | docker-compose -v |
Taier部署
解压依赖
1 | yum install unzip -y |
运行
通过docker-compose启动
docker-compose.yml
1 | version: '3' |
进入docker-compose目录,执行
1 | docker-compose up -d |
查看服务
1 | docker-compose ps |
查看配置的插件是否生效
1 | # 在运行中的容器里运行命令 |
查看日志
1 | docker-compose logs |
停止服务
1 | docker-compose down |
访问
当命令执行完成后,在浏览器上直接访问
用户名密码:
- admin@dtstack.com
- admin123
修改host
1 | docker exec -it taier_taier_1 /bin/bash |
修改hosts
1 | vi /etc/hosts |
添加
1 | 192.168.7.101 hadoop01 |
配置
SFTP 配置后要创建/data/sftp
文件夹才能连通。
Flink
键 | 值 |
---|---|
high-availability | zookeeper |
high-availability.zookeeper.quorum | hadoop01:2181,hadoop02:2181,hadoop03:2181 |
high-availability.zookeeper.path.root | /flink112 |
high-availability.storageDir | hdfs://hdfsns/flink112/ha/ |
状态存储
键 | 值 |
---|---|
state.backend | filesystem |
state.backend.fs.checkpointdir | hdfs://hdfsns/flink112/flink-checkpoints |
state.savepoints.dir | hdfs://hdfsns/flink112/flink-savepoints |
任务管理
键 | 值 |
---|---|
jobmanager.archive.fs.dir | hdfs://hdfsns/flink112/completed-jobs |
Jar目录
键 | 值 | 本地路径 |
---|---|---|
flinkLibDir | /data/insight_plugin1.12/flink_lib | /data/tools/bigdata/flink-1.12.7/lib |
chunjunDistDir | /data/insight_plugin1.12/chunjunplugin | /data/tools/bigdata/taier/chunjun/chunjun-dist |
remoteFlinkLibDir | /data/insight_plugin1.12/flink_lib | /data/tools/bigdata/flink-1.12.7/lib |
remoteChunjunDistDir | /data/insight_plugin1.12/chunjunplugin | /data/tools/bigdata/taier/chunjun/chunjun-dist |
prometheus:不用配置 Prometheus
是一个开源的系统监控和报警系统
metrics:不用配置 用于检测 jvm 上后端服务的运行状况
访问地址汇总
Hadoop
HDFS监控页面查询:
查看文件可以访问这个地址
http://192.168.7.101:50070/explorer.html#/
Yarn监控页面查询:
http://192.168.7.102:8088/cluster
Flink
监控Flilnk的job运行状态
http://192.168.7.101:8081/
Taier
用户名密码:
- admin@dtstack.com
- admin123
数据同步
Mysql
1 | jdbc:mysql://192.168.7.102:3306/ztest?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true&allowMultiQueries=true |
允许远程登录
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'psvmc123' WITH GRANT OPTION; |
设置密码永不过期
1 | ALTER USER 'root'@'%' PASSWORD EXPIRE NEVER; |