目的和范围

本文档旨在帮助用户完成 Apache StreamPark 的安装和初步配置

目标受众

面向需要在其系统中部署 Apache StreamPark 的系统开发和运维人员

系统要求

参考:https://streampark.apache.org/docs/user-guide/deployment#environmental-requirements

硬件要求

  • 本文档使用Linux:3.10.0-957.el7.x86_6

1_hardware_requirement

软件要求

Notes:

  1. 单纯安装StreamPark,可忽略hadoop
  2. 若采用 yarn application 模式 执行flink作业,需要hadoop
  • JDK : 1.8+
  • MySQL : 5.6+
  • Flink : 1.12.0+
  • Hadoop : 2.7.0+
  • StreamPark : 2.0.0+

本文档采用的软件版本信息

  • JDK:1.8.0_181
  • MySQL: 5.7.26
  • Flink : 1.14.3-scala_2.12
  • Hadoop : 3.2.1

主要组件依赖关系:

2_main_components_dep

安装前准备

JDK、MYSQL、HADOOP需用户自行查阅资料安装。

下载flink

  1. cd /usr/local
  2. wget https://archive.apache.org/dist/flink/flink-1.14.3/flink-1.14.3-bin-scala_2.12.tgz

解压

  1. tar -zxvf flink-1.14.3-bin-scala_2.12.tgz

重命名

  1. mv flink-1.14.3 flink

配置flink环境变量

  1. # 配置环境变量(vim ~/.bashrc),加入以下内容
  2. export FLINK_HOME=/usr/local/flink
  3. export PATH=$FLINK_HOME/bin:$PATH
  4. # 生效环境变量配置
  5. source ~/.bashrc
  6. # 测试(出现:'Version: 1.14.3, Commit ID: 98997ea',则说明配置成功)
  7. flink -v

3_flink_home

引入MySQL依赖包

原因:由于Apache 2.0许可与Mysql Jdbc驱动许可的不兼容,用户需要自行下载驱动jar包并放在 $STREAMPARK_HOME/lib 中,推荐使用8.x版本。 驱动包版本:mysql-connector-java-8.0.28.jar

  1. cp mysql-connector-java-8.0.28.jar /usr/local/streampark/lib

4_mysql_dep

下载Apache StreamPark™

下载URL:https://dlcdn.apache.org/incubator/streampark/2.0.0/apache-streampark_2.12-2.0.0-incubating-bin.tar.gz

上传 apache-streampark_2.12-2.0.0-incubating-bin.tar.gz 至 服务器 /usr/local 路径

5_streampark_install_pkg

解压

  1. tar -zxvf apache-streampark_2.12-2.0.0-incubating-bin.tar.gz

6_unpkg

安装

初始化系统数据

目的:创建StreamPark组件部署依赖的数据库(表),同时将其运行需要的数据提前初始化(比如:web页面的菜单、用户等信息),便于后续操作。

查看执行StreamPark元数据SQL文件

说明:

  • StreamPark支持MySQL、PostgreSQL、H2
  • 本次以MySQL为例,PostgreSQL流程基本一致

数据库创建脚本: /usr/local/apache-streampark_2.12-2.0.0-incubating-bin/script/schema/mysql-schema.sql

7_mysql_schema_file

数据库创建脚本: /usr/local/apache-streampark_2.12-2.0.0-incubating-bin/script/data/mysql-data.sql

8_mysql_data_file

连接MySQL数据库 && 执行初始化脚本

  1. source /usr/local/apache-streampark_2.12-2.0.0-incubating-bin/script/schema/mysql-schema.sql

9_import_streampark_schema_file

  1. source source /usr/local/apache-streampark_2.12-2.0.0-incubating-bin/script/data/mysql-data.sql

10_import_streampark_data_file

  1. source source /usr/local/apache-streampark_2.12-2.0.0-incubating-bin/script/data/mysql-data.sql

10_import_streampark_data_file

查看执行结果

  1. show databases;

11_show_streampark_database

  1. use streampark;

12_use_streampark_db

  1. show tables;

13_show_streampark_db_tables

Apache StreamPark™配置

目的:配置启动需要的数据源。 配置文件所在路径:/usr/local/streampark/conf

14_streampark_conf_files

配置mysql数据源

  1. vim application-mysql.yml

username、password、url中的数据库IP/端口号 需要改成用户自己环境的信息

  1. spring:
  2. datasource:
  3. username: 数据库用户名
  4. password: 数据库用户密码
  5. driver-class-name: com.mysql.cj.jdbc.Driver
  6. url: jdbc:mysql://数据库IP地址:数据库端口号/streampark?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8

配置应用端口、hdfs存储、应用访问密码等

  1. vim application.yml

主要的配置项:

  1. server.port # 【重要】默认的web访问端口号10000,如果有冲突(如: hive服务)可以更改
  2. knife4j.basic.enable # true表示允许访问页面 Swagger API
  3. knife4j.basic.password # 访问页面 Swagger API 时需要密码,这样可以提高接口安全性
  4. spring.profiles.activemysql # 【重要】表示系统采用何种数据源,本文档采用mysql
  5. workspace.remote # 配置工作空间信息
  6. hadoop-user-name # 如果使用hadoop,该处用户需要保证有操作hdfs的权限,否则会报“org.apache.hadoop.security.AccessControlException: Permission denied”异常
  7. ldap.password # 系统登陆页面提供了2种登录模式: 用户密码 和 ldap。这里可以配置ldap密码

主要配置示例:

15_application_yml_server_port

上传flink job jar 如果过大,可能会导致上传失败,因此可以考虑修改(max-file-size和max-request-size)这两个参数;当然,实际环境还要考虑其他因素:nginx限制等。

16_application_yml_spring_profile_active

支持knox配置,有些用户环境私有部署hadoop,可通过knox访问yarn web workspace: 配置工作空间信息(比如:savepoint和checkpoint存储路径等)

17_application_yml_streampark_workspace

ldap

18_application_yml_ldap

【可选】配置kerberos

背景:企业级hadoop集群环境都有设置安全访问机制,比如kerberos。StreamPark也可配置kerberos,使得flink可通过kerberos认证,向hadoop集群提交作业。

修改项如下:

  1. security.kerberos.login.enable=true
  2. security.kerberos.login.principal=实际的principal
  3. security.kerberos.login.krb5=/etc/krb5.conf
  4. security.kerberos.login.keytab=实际的keytab文件
  5. java.security.krb5.conf=/etc/krb5.conf

19_kerberos_yml_config

启动Apache StreamPark™

进入服务器Apache StreamPark™安装路径

  1. cd /usr/local/streampark/

20_enter_streampark_dir

启动Apache StreamPark™服务

  1. ./bin/startup.sh

21_start_streampark_service

查看启动日志 目的:确认无报错信息

  1. tail -100f log/streampark.out

22_check_service_starting_log

验证安装

  1. # 页面正常打开,则说明部署成功。
  2. http://部署streampark服务IP或域名:10000/
  3. admin/streampark

页面正常访问

23_visit_streampark_web

系统正常登录

24_streampark_web_index_page

常见问题

Cannot load driver class: com.mysql.cj.jdbc.Driver

原因:缺少mysql驱动包,参见 “3.2. 引入MySQL依赖包”

25_lack_mysql_driver_err

参考资源

https://streampark.apache.org/docs/user-guide/deployment/