当前位置:   article > 正文

Flink开发环境搭建

flink开发环境搭建

1. 创建Flink项目及依赖管理

1.1创建Flink项目

官网创建Flink项目有两种方式:

https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/projectsetup/java_api_quickstart.html

方式一:

  1. mvn archetype:generate \
  2. -DarchetypeGroupId=org.apache.flink \
  3. -DarchetypeArtifactId=flink-quickstart-java \
  4. -DarchetypeVersion=1.11

 

方式二:

curl https://flink.apache.org/q/quickstart.sh | bash -s 1.11

 

这里我们仍然使用第一种方式创建Flink项目。

打开终端,切换到对应的目录,通过maven创建flink项目

mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java  -DarchetypeVersion=1.11

 

项目构建过程中需要指定groupId,artifactId,version和package

 

 

Flink项目创建成功

 

 

打开IDEA工具,选择刚刚创建的flink项目,成功导入IDEA开发工具

 

 

通过maven打包测试运行

mvn clean package

 

 

刷新target目录可以看到刚刚打包的flink项目

 

 

1.2. Flink依赖

Core Dependencies(核心依赖):

1.核心依赖打包在flink-dist*.jar里

2.包含coordination, networking, checkpoints, failover, APIs, operations (such as windowing), resource management等必须的依赖

注意:核心依赖不会随着应用打包(<scope>provided</scope>)

 

3.核心依赖项尽可能小,并避免依赖项冲突

Pom文件中添加核心依赖

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-java</artifactId>
  4. <version>1.11</version>
  5. <scope>provided</scope>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.flink</groupId>
  9. <artifactId>flink-streaming-java_2.11</artifactId>
  10. <version>1.11</version>
  11. <scope>provided</scope>
  12. </dependency>

注意:scope= provided不会随着应用打包。

 

 

User Application Dependencies(应用依赖):

connectors, formats, or libraries(CEP, SQL, ML)、

注意:应用依赖会随着应用打包(scope保持默认值就好)

Pom文件中添加应用依赖

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-connector-kafka-0.10_2.11</artifactId>
  4. <version>1.11</version>
  5. </dependency>

 

注意:应用依赖按需选择,会随着应用打包,可以通过Maven Shade插件进行打包。

1.3. 关于Scala版本

Scala各版本之间是不兼容的(你基于Scala2.12开发Flink应用就不能依赖Scala2.11的依赖包)。

 

只使用Java的开发人员可以选择任何Scala版本,Scala开发人员需要选择与他们的应用程序的Scala版本匹配的Scala版本。

1.4. Hadoop依赖

不要把Hadoop依赖直接添加到Flink application,而是:

export HADOOP_CLASSPATH=${hadoop classpath}

Flink组件启动时会使用该环境变量的

 

特殊情况:如果在Flink application中需要用到Hadoop的input-/output format,只需引入Hadoop兼容包即可(Hadoop compatibility wrappers)

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-hadoop-compatibility_2.11</artifactId>
  4. <version>1.6.2</version>
  5. </dependency>

1.5 Flink项目打包

Flink 可以使用maven-shade-plugin对Flink maven项目进行打包,具体打包命令为

mvn clean package

2. 自己编译Flink

2.1安装maven

1.下载

到maven官网下载安装包,这里我们可以选择使用apache-maven-3.3.9-bin.tar.gz。

2.解压

将apache-maven-3.3.9-bin.tar.gz安装包上传至主节点的,然后使用tar命令进行解压

tar -zxvf apache-maven-3.3.9-bin.tar.gz

3.创建软连接

ln -s apache-maven-3.3.9 maven

4.配置环境变量

  1. vi ~/.bashrc
  2. export MAVEN_HOME=/home/hadoop/app/maven
  3. export PATH=$MAVEN_HOME/bin:$PATH

 

5.生效环境变量

source ~/.bashrc

6.查看maven版本

mvn –version

 

7. settings.xml配置阿里镜像

添加阿里镜像

  1. <mirror>
  2.      <id>nexus-osc</id>
  3. <mirrorOf>*</mirrorOf>
  4. <name>Nexus osc</name>
  5. <url>http://maven.aliyun.com/nexus/content/repositories/central</url>
  6. </mirror>

2.2安装jdk

编译flink要求jdk8或者以上版本,这里已经提前安装好jdk1.8,具体安装配置不再赘叙,查看版本如下:

[hadoop@cdh01 conf]$ java -version

java version "1.8.0_51"

Java(TM) SE Runtime Environment (build 1.8.0_51-b16)

Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

2.3下载源码

登录github:https://github.com/apache/flink,获取flink下载地址:https://github.com/apache/flink.git

 

打开Flink主节点终端,进入/home/hadoop/opensource目录,通过git clone下载flink源码:

git clone https://github.com/apache/flink.git

 

错误1:如果Linux没有安装git,会报如下错误:

bash: git: command not found

 

解决:git安装步骤如下所示:

1.安装编译git时需要的包(注意需要在root用户下安装)

  1. yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
  2. yum install  gcc perl-ExtUtils-MakeMaker

2.删除自带的非完整版的git

yum remove git

3.下载git源码

先安装wget

yum -y install wget

使用wget下载git源码

  1. wget https://www.kernel.org/pub/software/scm/git/git-2.0.5.tar.gz
  2. #解压git
  3. tar xzf git-2.0.5.tar.gz
  4. #编译安装git
  5. cd git-2.0.5
  6. make prefix=/usr/local/git all
  7. sudo make prefix=/usr/local/git install
  8. echo "export PATH=$PATH:/usr/local/git/bin" >> ~/.bashrc
  9. source ~/.bashrc
  10. #查看git版本
  11. git –version

 

错误2:git clone https://github.com/apache/flink.git

Cloning into 'flink'...

fatal: unable to access 'https://github.com/apache/flink.git/': SSL connect error

 

解决:

  1. 升级 nss 版本:yum update nss
  2. 2.4切换对应flink版本
  3. 使用如下命令查看flink版本分支
  4. git tag
  5. 切换到flink对应版本(这里我们使用flink1.6.2)
  6. git checkout release-1.6.2

 

2.5编译flink

进入flink 源码根目录:/home/hadoop/opensource/flink,通过maven编译flink

mvn clean install -DskipTests -Dhadoop.version=2.6.0

错误1:

[ERROR]   mvn <goals> -rf :flink-mapr-fs

报错缺失flink-mapr-fs,需要手动下载安装。

解决:

  1. #1.下载maprfs jar包
  2. 通过手动下载maprfs-5.2.1-mapr.jar包,下载地址地址:https://repository.mapr.com/nexus/content/groups/mapr-public/com/mapr/hadoop/maprfs/5.2.1-mapr/
  3. #2.上传至主节点
  4. 将下载的maprfs-5.2.1-mapr.jar包上传至主节点的/home/hadoop/downloads目录下。
  5. #3.手动安装
  6. #手动安装缺少的包到本地仓库
  7. mvn install:install-file -DgroupId=com.mapr.hadoop -DartifactId=maprfs -Dversion=5.2.1-mapr -Dpackaging=jar  -Dfile=/home/hadoop/downloads/maprfs-5.2.1-mapr.jar
  8. #4.继续编译
  9. #使用maven继续编译flink(可以排除刚刚已经安装的包)
  10. mvn clean install -Dmaven.test.skip=true -Dhadoop.version=2.7.3  -rf :flink-mapr-fs

 

错误2:

ERROR] location: package org.apache.hadoop.conf

[ERROR] /home/hadoop/opensource/flink/flink-filesystems/flink-mapr-fs/src/main/java/org/apache/flink/runtime/fs/maprfs/MapRFileSystem.java:[73,93] cannot find symbol

[ERROR] symbol:   class Configuration

缺失org.apache.hadoop.fs包,报错找不到。

  1. 解决:
  2. flink-mapr-fs模块的pom文件中添加如下依赖:
  3. <dependency>
  4. <groupId>org.apache.hadoop</groupId>
  5. <artifactId>hadoop-common</artifactId>
  6. <version>${hadoop.version}</version>
  7. </dependency>
  8. 继续往后编译:
  9. mvn clean install -Dmaven.test.skip=true -Dhadoop.version=2.7.3 -rf :flink-mapr-fs

 

错误3:

[ERROR]

报错缺少kafka-schema-registry-client-3.3.1.jar 包

解决:

  1. #手动下载kafka-schema-registry-client-3.3.1.jar包,下载地址如下:
  2. http://packages.confluent.io/maven/io/confluent/kafka-schema-registry-client/3.3.1/kafka-schema-registry-client-3.3.1.jar
  3. 将下载的kafka-schema-registry-client-3.3.1.jar上传至主节点的目录下/home/hadoop/downloads
  4. #手动安装缺少的kafka-schema-registry-client-3.3.1.jar包
  5. mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-schema-registry-client -Dversion=3.3.1 -Dpackaging=jar  -Dfile=/home/hadoop/downloads/kafka-schema-registry-client-3.3.1.jar
  6. #继续往后编译
  7. mvn clean install -Dmaven.test.skip=true -Dhadoop.version=2.7.3  -rf :flink-mapr-fs

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/597976
推荐阅读
相关标签
  

闽ICP备14008679号