flink On Yarn模式
flink On Yarn模式
一、准备工作
-
机器
10.0.3.149(master) 10.0.3.147(slave1) 基本环境准备: JDK1.8 以上的版本,同时需要配置环境变量 JAVA_HOME。 ssh 服务安装并启动
-
安装包和依赖包
-
flink的安装包:flink-1.11.2-bin-scala_2.11.tgz
https://www.apache.org/dyn/closer.lua/flink/flink-1.11.2/flink-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.gzelasticsearch-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
-
二、Hadoop环境部署
1、安装ssh服务
-
检查是否已经安装好ssh服务,进入shell命令,输入如下命令,
ps -ef | grep ssh
如果只有一个结果,则没有安装
-
若没有,则使用如下命令进行安装:
sudo apt-get install ssh openssh-server
2、配置各节点免密登录
-
每个节点上生成ssh** : ssh-****** -t rsa (root用户默认目录/root/.ssh)
cd /root/.ssh ssh-****** -t rsa 出现提示后直接回车即可,会出现三次提示,都直接回车即可。 查看.ssh 目录下会生成id_rsa、id_rsa.pub两个文件 将生成的id_rsa.pub同步到本节点authorized_keys中,并同步到其他节点的authorized_keys中
-
验证免密登录
ssh -P端口 [email protected]
连接时不会提示输入密码
3、配置hosts
在每个节点的/etc/hosts文件中配置hosts
10.0.3.149 master
10.0.3.147 slave1
4、 配置Hadoop文件
注:以下配置需要在Hadoop每个节点上执行
1. 上传hadoop安装包至服务器/data/app目下
2. 解压并重命名为hadoop-2.10.0
3. 修改配置
此处需修改多个配置文件,均在hadoop-2.10.0/etc/hadoop 目录下
core-site.xml 文件
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/app/hadoop-2.10.0/tmp/</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/app/hadoop-2.10.0/tmp/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/app/hadoop-2.10.0/tmp/datanode</value>
</property>
</configuration>
mapred-site.xml.template 文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
</configuration>
yarn-site.xml 文件
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<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>
<!--配置Hadoop的主节点ip-->
<property>
<description>The hostname of the RM.</description>
<name>yarn.resourcemanager.hostname</name>
<value>10.0.3.149</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>是否在任务启动前检查实际资源是否足够</description>
</property>
<!---测试环境8C16G,资源配置为测试样例,具体情况以实际生产环境为主。--->
<!--设置规则参照-->
<!--
1. taskmanager数量 = 总slot数 / 每个taskmanager允许的slot数
2. jobManager数量 * jobmanger内存设置 + taskmanager数量*taskmanager内存设置 < 任务允许的最大内存
3. 总slot数 < 任务允许的最大核数
-->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>16</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>10240</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>4</value>
<description>提交一个任务允许申请的最大cpu核数</description>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
<description>提交一个任务允许申请的最大内存</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>5</value>
<description>虚拟内存使用率</description>
</property>
</configuration>
3、 添加环境变量 /etc/profile
在文档末尾增加:
export HADOOP_HOME=/data/install/hadoop-2.10.0
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
执行source /etc/profile 让其生效
4、在hadoop主节点启动Hadoop服务
-
初始化namenode
cd /data/app/hadoop-2.10.0 /bin/hadoop namenode -format
-
启动Hadoop
cd /data/app/hadoop-2.10.0/sbin/ bash start-dfs.sh
-
启动yarn
cd /data/app/hadoop-2.10.0/sbin/ bash start-yarn.sh
-
注意
start-all.sh 脚本可以启动Hadoop和yarn两个
5、验证Hadoop运行
-
验证yarn资源管理是否正常
http://10.0.3.149:8088/cluster
-
验证hdfs各节点是否正常
http://10.0.3.149:50070/dfshealth.html#tab-overview
url中的ip为Hadoop集群主节点的ip,根据实际环境修改
三、flink安装部署
1、将安装包和依赖包上传至Hadoop集群中任一节点上
1. 解压flink-1.11.2-bin-scala_2.11.tgz安装包,重命名成flink11 ,
2. 将依赖包放置到flink的lib目录下
2、修改flink的conf/flink-conf.yaml配置文件
##集群管理节点的工作端口
jobmanager.rpc.port: 6123
##管理节点进程允许使用的最大内存,单位兆
jobmanager.memory.process.size: 1024m
##工作节点的进程允许使用的最大内存,单位兆
taskmanager.memory.process.size: 1024m
##工作节点提供的最大 slot 数。这个数的配置需要根据业务场景确定。
##taskmanager数量 = 总slot数 / 每个taskmanager允许的slot数
taskmanager.numberOfTaskSlots: 3
##集群级别的并行度。优先级最低。如果指定了 session 级别的并行度,此值会被覆盖
parallelism.default: 1
##这个是 flink 提供的 web 管理端口
rest.port: 8081
##需要通过此配置告诉 flink机器的通讯端口。根据实际环境需改
env.ssh.opts: -p 36000
##默认的容错策略
jobmanager.execution.failover-strategy: region
##允许通过 web 端口提交任务。
web.submit.enable: true
3、验证flink
- 执行 flink/bin目录下yarn-session.sh
bash yarn-session.sh - 查看Hadoop页面上是否有此任务
http://10.0.3.149:8088/cluster
在任务的 Tracking UI ,点击ApplicationMaster 可跳转至flink web 页
注:跳转之后的路径如果是hostname的话,可以将hostsname改成对应的ip。
4、启停单节点
./yarn-daemon.sh start resourcemanager nodemamager
./yarn-daemon.sh stop resourcemanager nodemamager