004Flink
Local模式安装(集群只有一个节点)
Local模式安装
(1)安装jdk,配置JAVA_HOME,建议使用jdk1.8以上
(2)安装包下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz
(3)直接上传安装包到服务器
解压安装包:tar -zxvf flink-1.9.1-bin-scala_2.11.tgz
创建快捷方式: ln -s flink-1.9.1-bin-scala_2.11.tgz flink
配置FLINK_HOEM环境变量
(4)启动服务
local模式,什么配置项都不需要配,直接启动服务器即可
cd $FLINK_HOME
./bin/start-cluster.sh 启动服务
./bin/stop-cluster.sh 停止服务
(5)Web页面浏览
localhost:8081
在集群上提交任务
(1)编译,打包
mvn clean package
pom文件里面的依赖上添加上:
provided
代表这个依赖打包的时候不打到jar包里面,因为我们这些依赖包flink已经自带了,所以我们打包的时候不用把打包进去。
(2) 运行
在hadoop01 上执行 nc -lk 9999
flink run -c stream.WindowWordCountJava flinklesson-1.0-SNAPSHOT.jar -port 9999
查看任务
查看日志:
tail -F $FLINK_HOME/log/flink-work-taskexecutor-0-tjtx-98-197.58os.org.out
(3) 停止任务
方式一:页面上停止
方式二:命令停止
flink cancel job-id
Standalone模式安装(local)
(1)集群规划
(2)依赖 **
jdk1.8以上,配置JAVA_HOME
主机之间免密码
flink-1.9.1-bin-scala_2.11.tgz
(3)安装步骤
(a) 修改conf/flink-conf.yaml
jobmanager.rpc.address: hadoop01
(b) 修改conf/slaves
hadoop02
hadoop03
(c) 拷贝到其他节点
scp -rq /usr/local/flink-1.9.1 hadoop02:/usr/local
scp -rq /usr/local/flink-1.9.1 hadoop03:/usr/local
(d):在hadoop01(JobMananger)节点启动
start-cluster.sh
(e):访问http://hadoop01:8081
(4) StandAlone模式需要考虑的参数
jobmanager.heap.mb:jobmanager节点可用的内存大小
taskmanager.heap.mb:taskmanager节点可用的内存大小
taskmanager.numberOfTaskSlots:每台机器可用的cpu数量
parallelism.default:默认情况下任务的并行度
taskmanager.tmp.dirs:taskmanager的临时数据存储目录
Flink on Yarn模式安装
- 首先安装好Hadoop(yarn)
- 上传一个flink的包(什么参数都不要配置)
Flink on YARN部署很简单,就是只要部署好hadoop集群即可,我们只需要部署一个Flink客户端,然后从flink客户端提交Flink任务即可。
flink on yarn有两种方式:
第一种方式
在yarn上启动一个flink集群,flink就持有了yarn的资源(即使flink上没有任何程序,yarn的资源其他非flink集群任务使用不了了,造成资源浪费),在flink集群上提交任务。除非把Flink集群停了,不然资源不会释放。
【yarn-session.sh(开辟资源)+flink run(提交任务)】
启动一个一直运行的flink集群
/bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 [-d]
把任务附着到一个已存在的flink yarn session
•./bin/yarn-session.sh -id application_1463870264508_0029
•执行任务
•./bin/flink run ./examples/batch/WordCount.jar -input hdfs://hadoop100:9000/LICENSE -output hdfs://hadoop100:9000/wordcount-result.txt
停止任务 【web界面或者命令行执行cancel命令】
第二种方式
每提交一个任务就在yarn上面启动一个flink小集群(推荐使用)
任务运行完了资源就自动释放。
【flink run -m yarn-cluster(开辟资源+提交任务)】
•启动集群,执行任务
•./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ./examples/batch/WordCount.jar
-p:并行度,
-yn:基本上参数设置后没有用
注意:client端必须要设置YARN_CONF_DIR或者HADOOP_CONF_DIR或者HADOOP_HOME环境变量,通过这个环境变量来读取YARN和HDFS的配置信息,否则启动会失败
help信息(yarn-session.sh和flink run)
yarn-session.sh
用法:
必选
-n,--container <arg> 分配多少个yarn容器 (=taskmanager的数量)
可选
-D <arg> 动态属性
-d,--detached 独立运行
-jm,--jobManagerMemory <arg> JobManager的内存 [in MB]
-nm,--name 在YARN上为一个自定义的应用设置一个名字
-q,--query 显示yarn中可用的资源 (内存, cpu核数)
-qu,--queue <arg> 指定YARN队列.
-s,--slots <arg> 每个TaskManager使用的slots数量
-tm,--taskManagerMemory <arg> 每个TaskManager的内存 [in MB]
-z,--zookeeperNamespace <arg> 针对HA模式在zookeeper上创建NameSpace
-id,--applicationId <yarnAppId> YARN集群上的任务id,附着到一个后台运行的yarn session中
flink run
run [OPTIONS] <jar-file> <arguments>
"run" 操作参数:
-c,--class <classname> 如果没有在jar包中指定入口类,则需要在这里通过这个参数指定
-m,--jobmanager <host:port> 指定需要连接的jobmanager(主节点)地址,使用这个参数可以指定一个不同于配置文件中的jobmanager
-p,--parallelism <parallelism> 指定程序的并行度。可以覆盖配置文件中的默认值。
默认查找当前yarn集群中已有的yarn-session信息中的jobmanager【/tmp/.yarn-properties-root】:
./bin/flink run ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
连接指定host和port的jobmanager:
./bin/flink run -m hadoop100:1234 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
启动一个新的yarn-session:
./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
注意:yarn session命令行的选项也可以使用./bin/flink 工具获得。它们都有一个y或者yarn的前缀
例如:./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar
Flink Shell使用
Start-scala-shell.sh
提供的benv和senv并不是那么好用
实用性不是很大
针对初学者,开发的时候容易出错,如果每次都打包进行调试,比较麻烦,并且也不好定位问题,可以在scala shell命令行下进行调试
scala shell方式支持流处理和批处理。当启动shell命令行之后,两个不同的ExecutionEnvironments会被自动创建。使用senv(Stream)和benv(Batch)分别去处理流处理和批处理程序。(类似于spark-shell中sc变量)
bin/start-scala-shell.sh [local|remote|yarn] [options]