Flink standone HA模式部署文档
一、准备工作
1、机器
10.0.3.192(master)
10.0.3.194(slave1)
基本环境准备:
JDK1.8 以上的版本,同时需要配置环境变量 JAVA_HOME。
ssh 服务安装并启动
2.安装包和依赖包
flink的安装包:flflink-1.11.2-bin-scala_2.11.tgz
https://www.apache.org/dyn/closer.lua/flflink/flflink-1.11.2/flflink-1.11.2-bin-scala_2.11.tgz
所需要的依赖包:
https://mvnrepository.com/
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz
elasticsearch-6.4.3.jar
elasticsearch-7.5.1.jar
elasticsearch-core-7.5.1.jar
elasticsearch-rest-client-6.4.3.jar
elasticsearch-rest-high-level-client-6.4.3.jar
elasticsearch-x-content-7.5.1.jar
flink-azure-fs-hadoop-1.11.2.jar
flink-cep_2.11-1.11.2.jar
flink-cep-scala_2.11-1.11.2.jar
flink-connector-elasticsearch6_2.11-1.11.2.jar
flink-connector-elasticsearch7_2.11-1.11.2.jar
flink-connector-elasticsearch-base_2.11-1.11.2.jar
flink-connector-filesystem_2.11-1.11.2.jar
flink-connector-kafka-0.10_2.11-1.11.2.jar
flink-connector-kafka-0.11_2.11-1.11.2.jar
flink-connector-kafka-base_2.11-1.11.2.jar
flink-csv-1.11.2.jar
flink-dist_2.11-1.11.2.jar
flink-gelly_2.11-1.11.2.jar
flink-gelly-scala_2.11-1.11.2.jar
flink-json-1.11.2.jar
flink-ml_2.11-1.11.2.jar
flink-oss-fs-hadoop-1.11.2.jar
flink-python_2.11-1.11.2.jar
flink-queryable-state-runtime_2.11-1.11.2.jar
flink-shaded-hadoop-2-uber-2.6.5-10.0.jar
flink-shaded-netty-tcnative-dynamic-2.0.25.Final-11.0.jar
flink-shaded-zookeeper-3.5.6.jar
flink-sql-client_2.11-1.11.2.jar
flink-state-processor-api_2.11-1.11.2.jar
flink-swift-fs-hadoop-1.11.2.jar
flink-table_2.11-1.11.2.jar
flink-table-blink_2.11-1.11.2.jar
hppc-0.8.1.jar
httpasyncclient-4.1.4.jar
httpcore-nio-4.4.12.jar
kafka-clients-0.11.0.2.jar
lang-mustache-client-7.5.1.jar
log4j-1.2-api-2.12.1.jar
log4j-api-2.12.1.jar
log4j-core-2.12.1.jar
log4j-slf4j-impl-2.12.1.jar
lucene-core-7.4.0.jar
protobuf-java-3.11.4.jar
rank-eval-client-7.5.1.jar
⼆、Hdoop环境部署
1.安装ssh服务
-
检查是否已经安装好ssh服务,进⼊shell命令,输⼊如下命令,
ps -ef | grep ssh
-
如果只有⼀个结果,则没有安装
若没有,则使⽤如下命令进⾏安装:
sudo apt-get install ssh openssh-server
2.设置主机名
机器1:
vi /etc/hostname
将主机名修改为hadoop1,此操作需要重启生效
若不进行重启,可临时设置如下:
hostname hadoop1
3.设置网络域名
vi /etc/hosts
10.0.3.192 hadoop1
10.0.3.194 hadoop2
4.设置免密登录
4.1生产秘钥
ssh-keygen -t rsa
之后的询问操作全部执行enter
4.2设置对自己免密
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
4.3将秘钥传递到另外一台机器上(其中36000为ssh连接的端口号,根据实际情况修改)
ssh-copy-id -p 36000 -i ~/.ssh/id_rsa.pub hadoop2
输入密码
4.4验证能否免密登录其他机器
ssh -p36000 root@hadoop2
成功则执行exit进行退出
5.所有的机器节点重复步骤2 ,步骤3 ,步骤4
设置完成后,可在slave上执行如下操作验证
ssh -p36000 root@hadoop1
6.上传与解压
6.1 将hadoop安装包上传到服务器的/data/appa目录下
6.2 解压
tar -zxvf hadoop-2.10.1.tar.gz
6.3将解压后的文件重命名(将下面的hadoop-*替换解压后的文件名)
mv hadoop-* hadoop
7.配置环境变量
vi /etc/profile
添加
export HADOOP_HOME=/data/app/hadoop
export HADOOP_CONF_DIR=/data/app/hadoop/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后执行
source /etc/profile
8.hadoop配置修改
8.1 core-site.xml配置(/etc/hadoop下)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/appData/hdfs/tmp</value>
</property>
</configuration>
8.2 hdfs -site.xml(/etc/hadoop下)
<configuration>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>64m</value>
</property>
#指定namenode存储元数据的本地目录:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/appData/hdfs/name</value>
</property>
#指定datanode软件存放文件块的本地目录
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/appData/hdfs/data</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>file:///data/appData/hdfs/jn</value>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>file:///data/appData/hdfs/edits</value>
</property>
#指定sencondary namenode
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:50090</value>
</property>
<property>
<name>dfs.namenode.http.address</name>
<value>hadoop1:50070</value>
</property>
</configuration>
8.3 hadoop-env.sh(/etc/hadoop下)
export JAVA_HOME=/data/app/jdk1.8
export HADOOP_LOG_DIR=/data/logs/hadoop
export HADOOP_PID_DIR=/data/pid
export HADOOP_SSH_OPTS="-p 36000" #36000是ssh端口
9.给文件路径赋权
cd /data/
mkdir pid
chmod 777 /data/pid
10.编辑slaves文件
vi /data/app/hadoop/etc/hadoop/slaves
添加如下内容
hadoop1
hadoop2
11.格式化(主节点上进行)
hdfs namenode -format
12.将hadoop的安装目录拷贝到另外一台机器上
并进行步骤7 :配置环境变量
13.在另一台机器上进行格式化
hdfs namenode -format
14.启动HDFS
14.1 批量启动
在主节点进入sbin目录下,执行
./start-dfs.sh
14.2 分开启动
启动hadoop1
进入sbin目录下,执行
./hadoop-daemon.sh start namenode(这个namenode 是在哪里配置的,还是指定启动的namenode)
启动hadoop2
进入sbin目录下,执行
./hadoop-daemon.sh start datanode
可以用jps查看进程是否启动
15.web界面访问
http://10.0.3.192:50070
16.如果web页面访问不了,可能防火墙的原因,有以下两种方式解决方式
第一种
关闭防火墙
systemctl stop firewalld
查看防火墙状态
systemctl status firewalld
第二种
如果当前环境不允许关闭防火墙,在防火墙中开放hadoop使用到的端口
firewall-cmd --zone=public --add-port=50070/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
执行后重启防火墙
systemctl reload firewalld
三、flink环境部署
1. 配置hosts
vi /etc/hosts
10.0.2.11 flink1
10.0.2.12 flink2
10.0.2.13 flink3
注:其他机器添加同样配置
2. 解压flink 安装包
tar -zxvf flink安装包
解压后导入运行所需的hadoop的jar包
flink-azure-fs-hadoop-1.11.2.jar
flink-shaded-hadoop-2-uber-2.8.3-10.0.jar
hadoop-common-3.1.1.jar
hadoop-hdfs-2.10.1.jar
hadoop-hdfs-client-3.1.1.jar
导入运行kafka、es所需要的jar包。如果之前已经添加请忽略此步骤
3. 修改flink配置文件conf/flink-conf.yaml
###########修改以下配置的值########
###########配置中的namenode:9000 为hadoop主节点的hostname和端口,需要根据实际环境修改###########
jobmanager.rpc.address: flink1
taskmanager.numberOfTaskSlots: 3
high-availability: zookeeper
high-availability.storageDir: hdfs://namenode:9000/flinkha/
##bigdata 为zookeeper所在机器的hostname,也可配置zookeeper所在机器的ip:port
high-availability.zookeeper.quorum: bigdata1:2181
##新增此配置
high-availability.zookeeper.path.root: /flink
state.checkpoints.dir: hdfs://namenode:9000/flink/checkpoints
state.savepoints.dir: hdfs://namenode:9000/flink/savepoints
web.submit.enable: true
##新增此配置
web.upload.dir: /home/umos/flink/workplace
#如果ssh 端口号不是默认的22,可以设置端口号
env.ssh.opts: -p 36000
####如果是 HDFS HA部署,以下三个配置需注意 ,HDFS的路径的方式为:
high-availability.storageDir: hdfs://nameservice_id/flinkha/
state.checkpoints.dir: hdfs://nameservice_id/flink/checkpoints
state.savepoints.dir: hdfs://nameservice_id/flink/savepoints
4. 配置conf/master文件
flink1:8081
flink2:8081
flink3:8081
5. 配置conf/works文件
flink1
flink2
flink3
6. 其他flink节点重复1-5步骤
7. 启动zookeeper
flink的bin目录下执行
./start-zookeeper-quorm.sh