官网相关
<!--官网地址-->
https://flink.apache.org/
<!--jdbc 驱动官网,1.18版本开始才支持jdbc driver连接-->
https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/dev/table/jdbcdriver/
<!--jdbc SQL语法官网-->
https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/dev/table/sql/overview/
<!--下载安装包地址-->
https://flink.apache.org/downloads/
单机部署
解压后直接启动
bin/start-cluster.sh
bin/stop-cluster.sh
<!--启动sql网关以支持jdbc连接-->
./bin/sql-gateway.sh start -Dsql-gateway.endpoint.rest.address=localhost
集群部署步骤
| node01 | node02 | node03 | node04 |
| :--------: | :---------: | :---------: | :---------: |
| JobManager | TaskManager | TaskManager | TaskManager |
安装包上传到node01节点
解压、修改配置文件
解压:tar -zxf flink-1.9.2-bin-scala_2.11.tgz
修改flink-conf.yaml配置文件
jobmanager.rpc.address: node01 #JobManager地址
jobmanager.rpc.port: 6123 #JobManagerRPC通信端口
jobmanager.heap.size: 1024m #JobManager所能使用的堆内存大小
taskmanager.heap.size: 1024m #TaskManager所能使用的堆内存大小
taskmanager.numberOfTaskSlots: 2 #TaskManager管理的TaskSlot个数,依据当前物理机的核心数来配置,一般预留出一部分核心(25%)给系统及其他进程使用,一个slot对应一个core。如果core支持超线程,那么slot个数*2
rest.port: 8081 #指定WebUI的访问端口
修改slaves配置文件
node02
node03
node04
同步安装包到其他的节点
同步到node02 scp -r flink-1.9.2 node02:`pwd`
同步到node03 scp -r flink-1.9.2 node03:`pwd`
同步到node04 scp -r flink-1.9.2 node04:`pwd`
node01配置环境变量
vim ~/.bashrc
export FLINK_HOME=/opt/software/flink/flink-1.9.2
export PATH=$PATH:$FLINK_HOME/bin
source ~/.bashrc
standalone集群启动、停止
bin/start-cluster.sh
bin/stop-cluster.sh
<!--启动sql网关以支持jdbc连接-->
./bin/sql-gateway.sh start -Dsql-gateway.endpoint.rest.address=localhost
查看Flink Web UI页面
http://node01:8081/ #可通过rest.port参数自定义端口
界面提交jar
配置jar参数
1、main方法全路径
2、参数:--host localhost --port 7777
命令提交jar
bin/flink run -m jobManagerIP:8081 -c main方法全路径 jar包地址路径 -p 并行度 参数:--host localhost --port 7777
命令
查询提交的jobId集合
bin/flink list
取消提交的job
bin/flink cancel jobId
查询所有的jobId集合,包含已取消的job
bin/flink list -a
sql语法相关
<!--查询表结构-->
{ DESCRIBE | DESC } [catalog_name.][db_name.]table_name
<!--查询创建表语句-->
SHOW CREATE TABLE
SHOW CATALOGS
SHOW CURRENT CATALOG
SHOW DATABASES
SHOW CURRENT DATABASE
SHOW TABLES
SHOW CREATE TABLE
SHOW COLUMNS
SHOW PARTITIONS
SHOW PROCEDURES
SHOW VIEWS
SHOW CREATE VIEW
SHOW FUNCTIONS
SHOW MODULES
SHOW JARS
SHOW JOBS
been连接flink
beeline> !connect jdbc:flink://localhost:8083 -n 用户名 -p 密码
beeline -u jdbc:flink://localhost:8083 -n 用户名 -p 密码
表操作
<!--创建文件表时,需在服务器手动创建一个目录/tmp/T.csv-->
create table flink_t1(id int, name string) with ('connector' = 'filesystem', 'path' = 'file:///tmp/T.csv', 'format' = 'csv');
insert into flink_t1 values (1, 'hi'), (2, 'hello');
select * from flink_t1;
jdbc连接flink
<!--jdbc 驱动官网,1.18版本开始才支持jdbc driver连接-->
https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/dev/table/jdbcdriver/
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-sql-jdbc-driver-bundle</artifactId>
<version>1.18.1</version>
</dependency>
<!--JDBC连接URL,Flink SQL JobManager的IP和端口-->
<!--第一种创建连接方式-->
Connection connection = DriverManager.getConnection("jdbc:flink://localhost:8083","username","password");
Statement statement = connection.createStatement()
statement.execute("create table sql");
statement.execute("insert into sql");
statement.execute("select * from t")
statement.execute("show databases");
rs = statement.getResultSet();
while (rs.next()) {
String databaseName = rs.getString(1);
}
<!--第二种创建连接方式-->
DataSource dataSource = new FlinkDataSource("jdbc:flink://localhost:8083", new Properties());
Connection connection = dataSource.getConnection()
错误解答
出现此类错误,主要的原因是Current usage: 75.1 MB of 1 GB physical memory used; 2.1 GB of 2.1 GB virtual memor
y used. Killing container.
字面原因是容器内存不够,实际上是flink on yarn启动时检查虚拟内存造成的
所以修改配置文件,让它不检查就没事了
修改etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>