flink部署
前置准备
:
1.CentOS7.5
2.java8
3.配置三台机器时间同步和免密登陆,关闭防火墙
ip地址 | 主机名 |
---|---|
192.168.10.128 | master |
192.168.10.129 | slave1 |
192.168.10.130 | Slave2 |
下载链接:https://flink.apache.org/zh/downloads.html#section-7
这里我选择的是1.13.0:https://archive.apache.org/dist/flink/flink-1.13.0/
组件:
Flink中有几个关键性组件:客户端、调度中心(JobManager)、任务管理器(TaskManager)
我们通过客户端解析任务、然后提交到调度中心,调度中心分配任务到不同的工作节点运行。
单机模式
上传flink-1.13.0-bin-scala_2.12.tgz到/opt/software
解压(没有目录的话自行创建)
tar -zxvf flink-1.13.0-bin-scala_2.12.tgz -C /opt/module/
cd /opt/module/
mv flink-1.13.0 flink
启动
cd /opt/module/flink/bin
./start-cluster.sh
通过jps查看进程,包含StandaloneSessionClusterEntrypoint和TaskManagerRunner代表成功
10369 StandaloneSessionClusterEntrypoint
10680 TaskManagerRunner
flink提供了一个web页面,访问master:8081即可看到(要hosts文件配置了master对应的ip地址)
关闭集群
cd /opt/module/flink/bin
./stop-cluster.sh
会话模式(集群部署)
上传flink-1.13.0-bin-scala_2.12.tgz到/opt/software
master上解压(没有目录的话自行创建)
tar -zxvf flink-1.13.0-bin-scala_2.12.tgz -C /opt/module/
cd /opt/module/
mv flink-1.13.0 flink
修改配置,设置jobmanager
cd /opt/module/flink/conf
vim flink-conf.yaml
设置TaskManager 节点
vim workers
修改为
slave1
slave2
分发到slave1、slave2
scp -r /opt/module/flink/ root@slave1:/opt/module
scp -r /opt/module/flink/ root@slave2:/opt/module
只要在master启动
cd /opt/module/flink/bin
./start-cluster.sh
flink提供了一个web页面,访问master:8081即可看到(要hosts文件配置了master对应的ip地址)
yarn模式(推荐)
首先要确保有hadoop集群
master | slave1 | slave2 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
选择hadoop-3.1.3.tar.gz下载
上传至master节点
首先进行解压,然后分发到slave1和slave2,分别登陆到slave1,和slave2完成解压
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
scp hadoop-3.1.3.tar.gz root@slave1:/opt/software
scp hadoop-3.1.3.tar.gz root@slave2:/opt/software
配置环境变量
vim /root/.bash_profile
HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
重开shell窗口,查看hadoop版本
hadoop version
核心配置文件
cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim core-site.xml
<!-- namenode地址端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- 数据存储目录-->
<property>
<name>hadoop.data.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
HDFS配置文件
vim hdfs-site.xml
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.data.dir}/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.data.dir}/data</value>
</property>
<!--主节点的元数据备份地址-->
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file://${hadoop.data.dir}/namesecondary</value>
</property>
<property>
<name>dfs.client.datanode-restart.timeout</name>
<value>30</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
YARN配置文件
vim yarn-site.xml
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</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_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 关闭yarn对虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
修改mapred-site.xml
vim mapred-site.xml
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置hadoop. jdk环境,不知道jdk在哪的可以echo $JAVA_HOME查看
vim /opt/module/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
配置workers(不要有多余的空格)
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
master
slave1
slave2
在启动之前需要修改一下启动文件,修改start-dfs.sh和stop-dfs.sh,在文件最开始加入下面四行
vim /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
vim /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
修改start-dfs.sh和stop-dfs.sh,在文件最开始加入下面四行
vim /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
vim /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
同步sbin目录(启动命令),和etc/hadoop/目录下(配置文件),如果复制有问题自己手打
cd /opt/module/hadoop-3.1.3/etc/
scp -r hadoop/ root@slave1:/opt/module/hadoop-3.1.3/etc/
scp -r hadoop/ root@slave2:/opt/module/hadoop-3.1.3/etc/
cd /opt/module/hadoop-3.1.3
scp -r sbin/ root@slave1:/opt/module/hadoop-3.1.3/
scp -r sbin/ root@slave2:/opt/module/hadoop-3.1.3/
如果集群是第一次启动,需要在master节点格式化NameNode
cd /opt/module/hadoop-3.1.3/
bin/hdfs namenode -format
在master上执行
cd /opt/module/hadoop-3.1.3/
sbin/start-dfs.sh
在slave1上执行
cd /opt/module/hadoop-3.1.3/
sbin/start-yarn.sh
部署flink
解压flink,修改文件夹为flink-1.13.0-yarn
tar -zxvf flink-1.13.0-bin-scala_2.12.tgz -C /opt/module/
cd /opt/module
mv flink-1.13.0 flink-1.13.0-yarn
修改配置
vim flink-conf.yaml
jobmanager.memory.process.size: 1600m
taskmanager.memory.process.size: 1728m
taskmanager.numberOfTaskSlots: 8
parallelism.default: 1
启动,首先要保证hadoop集群启动成功
cd /opt/module/flink-1.13.0-yarn
bin/yarn-session.sh -nm test
可以访问地址,看到客户端
最后说一句,尚硅谷yyds
https://www.bilibili.com/video/BV133411s7Sa?p=24&spm_id_from=pageDriver