Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

【Flink】Flink的编译(包含hadoop的依赖)

好久没写文章了,手都有点生。

菜鸡一只,如果有说错的还请大家批评!

最近工作上的事情还是有点忙的,主要都是一些杂活,不干又不行,干了好像提升又不多,不过拿人家手短吃人家嘴软,既然拿了工资就应该好好的干活,当然前提是需求相对合理的情况嘿嘿~

近来Flink的势头有点猛啊,它和spark的区别在于:spark更倾向于批处理或者微批处理(spark现在的发展方向往人工智能的分布式算法上走了),但是Flink确确实实是为流诞生的(当然也可以做批处理就是了),不过现行的Flink版本还是有缺陷的,比如不能很好的支持Hive(毕竟还是有绝大多数公司在使用Hive作为数据仓库的),不过印象中好像说Flink在1.9的版本后,会开始支持Hive,那就很棒棒了!

闲话不多说,开始编译!

1、首先下载源码

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

大家各自选择合适的版本,我一开始选择的是最新的1.9版本,我发现有些(hadoop的)包,找不到,还挺头疼的,最后我选择了1.7的版本来完成编译。其实如果是自己玩玩,我还是更喜欢最新的版本的,哎可惜了!

 

2、上传服务器,解压

下载好源码之后一般是:flink-release-1.7.zip  这个样子

然后 unzip flink-release-1.7.zip 得到文件夹

 

3、编译前的准备

需要Maven 3和至少JDK1.8

这两个东西应该没问题吧,如果搞不定可以百度下,如果百度完还搞不定,那可能。。。。暂时还是不要编译吧,先把基础学好,原理搞清楚,想用Flink的话去官网下载官方编译好的版本吧

如果你的服务器上执行这两个命令,也能看到对应的回显信息,那证明你的前置环境应该是没问题了!

 

4、开始编译

进入到解压好的flink文件夹中,如图(我是已经编译好的文件夹,所以大家可能会看到一些源码中没有的文件或者文件夹):

# 最基础的编译方法,听说会自动使用pom里面的hadoop版本去编译,但是一般情况下,我们都会有自己指定的版本,所以一般不会用这个
mvn clean install -DskipTests


# 另一种编译命令,相对于上面这个命令,主要的确保是:
# 不编译tests、QA plugins和JavaDocs,因此编译要更快一些
mvn clean install -DskipTests -Dfast

 
# 如果你需要使用指定hadoop的版本,可以通过指定"-Dhadoop.version"来设置,编译命令如下:
mvn clean install -DskipTests -Dhadoop.version=2.6.0
# 或者
mvn clean install -DskipTests -Pvendor-repos -Dhadoop.version=2.6.0-cdh5.12.1


# 但是我发现使用cdh版本的时候,老是有这个或者那个flink集成hadoop的jar包下载不到,还是挺麻烦的,所以我最后选择的是

mvn clean install -DskipTests -Dhadoop.version=2.6.0

 

5、虽然执行了命令,但是会有各种报错!

异常类型一:

如下图(这里引用了作者:青蓝莓的文章的截图):

这是一个共性问题,有些包找不到,或者下不到解决方案就是手动安装

比如图中缺少kafka的包

mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-schema-registry-client -Dversion=3.3.1 -Dpackaging=jar  -Dfile=E:\bigdata_flink\packages\kafka-schema-registry-client-3.3.1.jar

比如缺少

Could not find artifact com.mapr.hadoop:maprfs:jar:5.2.1-mapr

# 1.下载
# 手动下载jar包 https://repository.mapr.com/nexus/content/groups/mapr-public/com/mapr/hadoop/maprfs/5.2.1-mapr/maprfs-5.2.1-mapr.jar然后扔到服务器上的/opt/bianyi/jar路径上
# 2.安装
mvn install:install-file -DgroupId=com.mapr.hadoop -DartifactId=maprfs -Dversion=5.2.1-mapr -Dpackaging=jar  -Dfile=/opt/bianyi/jar/maprfs-5.2.1-mapr.jar

通过这种方式,就可以把这个jar包放在自己maven的仓库的对应路径下!

异常类型二:(这种报错我没有实际遇到过,但我看有些人编译的时候有遇到)

例如:

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: python socket基于TCP的文件传输程序

下一篇: 【基础算法】深度优先搜索DFS与广度优先搜索BFS

精华推荐