NiFi编译打包问题

NiFi的编译打包问题

maven指定打包包名

  • 包名:pom文件- - -在maven-assembly-plugin<configuration>下指定,没有的话自己创建。
    <finalName>yourname</finalName>
    如果单纯的需要指定的名字(如不要-bin后缀)则添加:
    <appendAssemblyId>false</appendAssemblyId>
  • 格式:3.1.0后支持tgz等更多格式
    <artifactId>maven-assembly-plugin</artifactId> <version>3.1.0</version>
    <formats> <format>tgz</format> </formats>
  • 解压包后的名称:
    <formats>
    <format>tgz</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory> <baseDirectory>解压后名称</baseDirectory>

maven过滤系统变量

<source>
          <location>${project.build.directory}/generated-resources/bin/nifi.sh</location>
          <destination>nifi.sh</destination>
          <filter>false</filter>
         <fileMode>0775</fileMode>
</source>

当filter指定为true时,会将nifi.sh中的java环境变量替换为系统java变量的绝对路径,换一台别的机器可能出现异常。
其中fileMode为设置文件的权限。

maven指定文件格式unix或者dos

<lineEnding>unix</lineEnding>
添此时可能的值包括:

  • “keep”-保留所有行尾
  • “ unix”-使用Unix样式的行尾(例如“ \ n”)
  • “ lf”-使用单个换行符(即“ \ n”)
  • “ dos”-使用DOS- / Windows样式的行尾(例如“ \ r \ n”)
  • “ windows”-使用DOS- / Windows样式的行尾(例如“ \ r \ n”)
  • “ crlf”-使用回车符,换行符(例如“ \ r \ n”)

版本问题

ElasticSearch6.x

NiFi与ES6.x版本并不兼容,尝试去修改关于ES5.x的处理器连接ES6.x。

  • 步骤1:
    修改nifi-elasticsearch-5-processors的pom文件。将pom文件中关于ES的版本替换为6.3.2(这是我们使用的版本),luceuce的版本可通过ES命令查看,这里是7.3.1。(一般都会先去修改pom文件)

  • 步骤2:
    修改代码,ES6.x的API明显与ES5.x的不同,修改错误处即可。注意,代码中向ES写入时需要添加下边一行代码。即放置在(Settype… .get())后。(修改pom文件后当然要修改源码了)

    XCentType.JSON  //(记不太清楚了)
    
  • 步骤3:
    修改名字,将关于5的版本名字全部替换为6的,主要为nifi-elasticsearch-5-processorsnifi-elasticsearch-5-nar的部分。(注意:不要忘记将/src/main/resources/META-INF/services/目录下的文件内容修改为6.)将nifi-elasticsearch-6-processors打为jar包,后边要用到。

  • 步骤4:
    大致已经完成,但是编译时会出现找不到nifi-elasticsearch-6-processors,向maven依赖库中添加自己的jar包,具体地址可在通过maven根目录下conf中的setting.xml查看(localRepository)。放入到./m2/repository/org/apache/nifi/nifi-elasticsearch-processors下。在此目录下放置pom文件(我使用了ES5的pom文件,处理器一直报ES初始化版本错误,将ES5的pom文件里边ES版本修改就好了)。
    步骤5:
    nifi-elasticsearch-6-nar编译打成nar包,放入到nifi跟目录下的lib中即可。(注意要重启nifi的~)
    步骤6:
    如果你想将nifi-elasticsearch-6-nar的nar包直接打入到lib文件下,你就需要修改nifi-assembly下的pom文件,在其中添加nifi-elasticsearch-6-nar依赖。(找了好长一段时间…)

npm离线安装 与 Hive3

关于nifi-1.8.0.xxxx(后边一串的)版本与Hive3的链接
当我修改完ES6时,我就需要提交代码和我的maven库到内网(不联网)上去编译打包了。在自己电脑上已经编译过了,想着不会出什么问题(源码和依赖库都没变)。结果就出现一系列问题。
1.nifi-web-ui找不到node-1.8.0.linux-x64,好吧,这个问题很简单,下载个上传上去就好了。
2.nifi-web-ui又出错了,npm --cache-min Install安装出错。
查资料:主要参考各个博客,懒得找出处了~

  • npm安装需要联网去安装模块,安装后会在.npm文件夹下保存安装包,然后在目录的node-modules进行安装。
  • ok了,在window下,找到npm-cache文件夹,将安装包考出来。(我中间自己执行了npm --cache install,将安装包考出来后nifi编译别的nar包时又出这个错了,这个npm模块的包还挺多的,最好自己将nifi完整编译完后再考出.npm的安装包)导入到内网,linux中的/root/.npm目录下。我这里是这个,其他自己找找

3.终于完成了,但是看着处理器怎么这么少,没有关于hive3的处理器,这不是闹吗, 我们用的就是hive3.x的。还是在nifi-assembly的pom文件下。寻找hive3就行,将active什么的false换为true即可。再次编译打包,处理器终于够了,但是这个文件大小不太对,这个关于hive3的nar包怎么才150M,试试果然不能用(nifi-1.8.0.xxxx简直够了,这么坑)。
4. 最简单的办法,将nifi-hive3-nar下pom文件中的nifi-hive3-processors的版本改为1.8.0即可。
原因:nifi-hive-bundle下的hive和hadoop版本问题,可以在依赖库看到其pom文件与其他版本的不同,缺少很多依赖。修改hive3和hadoop版本即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值