文章目录
- 1. 常用Scope区别
- 2. [Flink集群搭建](https://www.jianshu.com/p/c47e8f438291)
- 2.1. 独立集群
- 2.2. yarn集群
- 2.3. [Flink 1.10.0 分布式高可用集群搭建](https://blog.csdn.net/RivenDong/article/details/104416464)
- 3. [SLF4J和Logback和Log4j和Logging的区别与联系](https://www.cnblogs.com/suger43894/p/9543685.html)
- 4. [Flink DataStream API 编程指南](https://blog.csdn.net/lixgjob/article/details/86594601)
- 5. [Flink任务提交流程(Standalone和Yarn)](https://blog.csdn.net/u013337425/article/details/102696305)
- 6. 寄语:天行健,君子以自强不息
1. 常用Scope区别
-
compile
默认
scope为compile,表示为当前依赖参与项目的编译
、测试
和运行
阶段,属于强依赖。打包之时,会打到包里
去。
-
test
- 该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junit
-
runtime
- 依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。此类的驱动都是为runtime的类库。
-
provided
- 该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与
编译
、测试
和运行
等周期,与compile等同。区别在于打包阶段进行了exclude操作。
- 该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与
2. Flink集群搭建
- 要求:
Java 1.8.x或更高版本
ssh免密登录
相同的目录结构
2.1. 独立集群
-
JAVA_HOME 配置
- conf/flink-conf.yaml 通过
env.java.home
键设置此变量env.java.home: /usr/lib/jdk1.8.0_162
- conf/flink-conf.yaml 通过
-
Flink配置
-
选择一个master结点
, 配置conf/flink-conf.yamljobmanager.rpc.address: 192.168.1.27
-
conf / slaves 配置从结点
-
其他重要配置
-
-
分发安装包
scp -r flink [email protected]:$PWD scp -r flink [email protected]:$PWD scp -r flink [email protected]:$PWD
-
启动Flink集群
${FLINK_HOME}/bin/start-cluster.sh
-
将JobManager / TaskManager实例添加到集群
-
Flink UI界面
2.2. yarn集群
-
设置Hadoop环境变量
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
-
以集群模式提交任务,每次都会新建flink集群
./flink run -m yarn-cluster -p 1 -yjm 1024 -ytm 1024m /home/hadoop/fanjh/FirstFlinkDemo-assembly-1.0.jar 19168.1.27 9999
-
启动Session flink集群,提交任务
-
查看使用方法
$FLINK_HOME/bin/yarn-session.sh -h
-
在YARN上启动一个长期运行的Flink集群的会话
bin/yarn-session.sh -jm 1024m -tm 1024m -s 4
-
会话开启后,在YARN上提交Flink作业
bin/flink run /home/hadoop/fanjh/FirstFlinkDemo-assembly-1.0.jar 192.168.1.27 9999
-
-
使用yarn 工具 来停止yarn session
yarn application -kill <applicationId>
2.3. Flink 1.10.0 分布式高可用集群搭建
-
独立集群高可用
-
配置masters文件conf/masters,并分发到每台机器
-
配置flink-conf.yam,并分发到每台机器
high-availability: zookeeper high-availability.storageDir: hdfs:///flink/ha/ high-availability.zookeeper.quorum: baojiabei03:2181,baojiabei04:2181,baojiabei05:2181 high-availability.zookeeper.path.root: /flink
-
-
YARN群集高可用性
3. SLF4J和Logback和Log4j和Logging的区别与联系
3.1. 一个著名的日志系统是怎么设计出来的
- 日志消息除了能打印到控制台, 还可以输出到文件,甚至可以通过邮件发送出去(
例如生成环境出错的消息
) - 日志内容应该可以做格式化, 例如变成纯文本,XML, HTML格式等等
- 对于不同的Java class,不同的 package , 还有不同级别的日志,应该可以灵活地输出到不同的文件中
- 例如对于com.foo 这个package,所有的日志都输出到 foo.log 文件中
- 对于com.bar 这个package ,所有文件都输出到bar. log文件中
对于所有的ERROR级别的日志,都输出到 errors.log文件中
- 能对日志进行分级, 有些日志纯属debug , 在本机或者测试环境使用, 方便程序员的调试, 生产环境完全不需要。有些日志是描述错误(error)的, 在生产环境下出错的话必须要记录下来,帮助后续的分析。
3.2. 在standalone集群模式下运行案例遇到的一个问题
在运行状态下,清空log文件夹下的内容之后,以后就不产生日志文件和输出文件了,重启之后恢复正常??
4. Flink DataStream API 编程指南
4.1. Flink程序剖析
Flink 程序看起来像是转换数据集合的规范化程序。每个程序由一些基本的部分组成
- 获取执行环境
- 加载/创建初始数据
- 指定对数据的转换操作
- 指定计算结果存放的位置
- 触发程序执行
4.2. 第一个Flink程序(WordCount)
-
整体结构
-
build.sbt
ThisBuild / resolvers ++= Seq( "Apache Development Snapshot Repository" at "https://repository.apache.org/content/repositories/snapshots/", Resolver.mavenLocal ) name := "FirstFlinkDemo" version := "1.0" organization := "com.xiaofan" ThisBuild / scalaVersion := "2.12.6" val flinkVersion = "1.10.0" val flinkDependencies = Seq( "org.apache.flink" %% "flink-scala" % flinkVersion % "provided", "org.apache.flink" %% "flink-streaming-scala" % flinkVersion % "provided", "org.slf4j" % "slf4j-log4j12" % "1.8.0-beta4") lazy val root = (project in file(".")). settings( libraryDependencies ++= flinkDependencies ) // 打包指定的主类 assembly / mainClass := Some("com.xiaofan.SocketTextStreamWordCount") // make run command include the provided dependencies Compile / run := Defaults.runTask(Compile / fullClasspath, Compile / run / mainClass, Compile / run / runner ).evaluated // stays inside the sbt console when we press "ctrl-c" while a Flink programme executes with "run" or "runMain" Compile / run / fork := true Global / cancelable := true // exclude Scala library from assembly assembly / assemblyOption := (assembly / assemblyOption).value.copy(includeScala = false) fork in run := true
-
mainRunner
这个好像设置不设置都没有什么影响
-
SocketTextStreamWordCount类
-
本地运行结果
-
打包提交的集群
-
修改代码
-
打fat包:
sbt clean assembly
-
提交到集群:
bin/flink run /home/hadoop/fanjh/FirstFlinkDemo-assembly-1.0.jar 192.168.1.27 9999
-