如何在不使用HDInsight的情况下使用NiFi直接从ADLS读取/写入

时间:2018-09-10 12:13:42

标签: apache-nifi azure-data-lake hdinsight databricks

我们想使用NiFi来连接ADLS(使用PutHDFS和FetchHDFS),而不必安装HDInsight。随后,我们希望使用Azure DataBricks运行Spark作业,并希望可以使用NiFi的ExecuteSparkInteractive处理器来完成。从我可以找到的所有示例中,似乎总是需要HDP或HDInsight。

任何人都可以共享这些指针而无需HDP或HDInsight怎么做吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

据我所知,ADLS在Apache NiFi中可用的*HDFS处理器上不能很好地工作(或完全不能工作)。提出了一项功能请求-NIFI-4360,并为此提出了后续的PR-#2158,但经过了简短的审核,但现在进展不大。您可以将其分叉或复制该代码库的面食,并希望对其进行审查。

答案 1 :(得分:0)

一年多以前,我进行了一次测试设置。 PutHDFS处理器可以使用其他一些类路径资源。需要以下依赖项:

  • adls2-oauth2-token-provider-1.0.jar
  • azure-data-lake-store-sdk-2.0.4-SNAPSHOT.jar
  • hadoop-azure-datalake-2.0.0-SNAPSHOT.jar
  • jackson-core-2.2.3.jar
  • okhttp-2.4.0.jar
  • okio-1.4.0.jar

有关更多详细信息,另请参见以下Blog。您可以将库,core-site.xml和hdfs-site.xml从HDInsight设置复制到运行NiFi的计算机上。您还应该正确设置dfs.adls.home.mountpoint,将其指向根目录或数据目录。请注意,这不是官方支持,因此是phps。您还应该将Azure Data Factory或StreamSets视为Data Ingest的选项。

答案 2 :(得分:0)

PutHDFS首先并不希望使用经典的hadoop集群。它仅出于常规原因需要core-site.xml。如以下示例所示,PutHDFS与ADLS一起使用时需要使用一个最低限度的配置文件。

使用NiFi PutHDFS处理器进入ADLS很简单。以下步骤将导致解决方案

  1. 已设置ADLS Gen1(ADLS已重命名为ADLS Gen1)
  2. 还为您的ADLS帐户设置了OAUTH身份验证。参见here
  3. 创建一个空的core-site.xml以配置PuHDFS处理器 使用以下属性更新core-site.xml(在此示例中,我使用Client Key模式进行身份验证)
    fs.defaultFS = adl://<yourADLname>.azuredatalakestore.net
    fs.adl.oauth2.access.token.provider.type = ClientCredential
    fs.adl.oauth2.refresh.url = <Your Azure refresh endpoint>
    fs.adl.oauth2.client.id = <Your application id>
    fs.adl.oauth2.credential = <Your key>

  4. 更新您的NiFi PutHDFS处理器以引用core-site.xml和其他ADLS库(hadoop-azure-datalake-3.1.1.jar和azure-data-lake-store-sdk-2.3.1 .jar)在上一步中创建,如下所示。 enter image description here

  5. 更新上游处理器并进行测试。