> If you plan to use NiFi for the long term, it might be worth investing in 
> converting your custom Flume components to NiFi processors. We can help you 
> get started if you need any guidance going that route.

+1. Running Flume sources/sinks is meant as a transition step. It's
really useful if you have a complex Flume flow and want to migrate
only parts of it over to NiFi at a time. I would port any custom
sources and sinks to NiFi once you knew that it would meet your needs
well. NiFi has a lot of documentation on writing processors and the
concepts map pretty well if you're already familiar with Flume's
execution model.

-Joey

On Thu, Oct 8, 2015 at 9:48 AM, Bryan Bende <bbe...@gmail.com> wrote:
>
> Hi Parul,
>
> It is possible to deploy a custom Flume source/sink to NiFi, but due to the 
> way the Flume processors load the classes for the sources and sinks, the jar 
> you deploy to the lib directory also needs to include the other dependencies 
> your source/sink needs (or they each need to individually be in lib/ 
> directly).
>
> So here is a sample project I created that makes a shaded jar:
> https://github.com/bbende/my-flume-source
>
> It will contain the custom source and following dependencies all in one jar:
>
> org.apache.flume:my-flume-source:jar:1.0-SNAPSHOT
> +- org.apache.flume:flume-ng-sdk:jar:1.6.0:compile
> +- org.apache.flume:flume-ng-core:jar:1.6.0:compile
> +- org.apache.flume:flume-ng-configuration:jar:1.6.0:compile
> +- org.apache.flume:flume-ng-auth:jar:1.6.0:compile
>   \- com.google.guava:guava:jar:11.0.2:compile
>      \- com.google.code.findbugs:jsr305:jar:1.3.9:compile
>
> I copied that to NiFi lib, restarted, created an ExecuteFlumeSource processor 
> with the following config:
>
> Source Type = org.apache.flume.MySource
> Agent Name = a1
> Source Name = r1
> Flume Configuration = a1.sources = r1
>
> And I was getting the output in nifi/logs/nifi-bootstrap.log
>
> Keep in mind that this could become risky because any classes found in the 
> lib directory would be accessible to all NARs in NiFi and would be found 
> before classes within a NAR because the parent is checked first during class 
> loading. This example isn't too risky because we are only bringing in flume 
> jars and one guava jar, but for example if another nar uses a different 
> version of guava this is going to cause a problem.
>
> If you plan to use NiFi for the long term, it might be worth investing in 
> converting your custom Flume components to NiFi processors. We can help you 
> get started if you need any guidance going that route.
>
> -Bryan
>
>
> On Thu, Oct 8, 2015 at 2:30 AM, Parul Agrawal <parulagrawa...@gmail.com> 
> wrote:
>>
>> Hello Bryan,
>>
>> Thank you very much for your response.
>>
>> Is it possible to have customized flume source and sink in Nifi?
>> I have my own customized source and sink? I followed below steps to add my 
>> own customized source but it did not work.
>>
>> 1) Created Maven project and added customized source. (flume.jar was created 
>> after this step)
>> 2) Added flume.jar file to nifi-0.3.0/lib folder.
>> 3) Added flume source processor with the below configuration
>>
>> Property           Value
>> Source Type         com.flume.source.Source
>> Agent Name      a1
>> Source Name         k1.
>>
>> But I am getting the below error in Flume Source Processor.
>> "Failed to run validation due to java.lang.NoClassDefFoundError : 
>> /org/apache/flume/PollableSource."
>>
>> Can you please help me in this regard. Any step/configuration I missed.
>>
>> Thanks and Regards,
>> Parul
>>
>>
>> On Wed, Oct 7, 2015 at 6:57 PM, Bryan Bende <bbe...@gmail.com> wrote:
>>>
>>> Hello,
>>>
>>> The NiFi Flume processors are for running Flume sources and sinks with in 
>>> NiFi. They don't communicate with an external Flume process.
>>>
>>> In your example you would need an ExecuteFlumeSource configured to run the 
>>> netcat source, connected to a ExecuteFlumeSink configured with the logger.
>>>
>>> -Bryan
>>>
>>> On Wednesday, October 7, 2015, Parul Agrawal <parulagrawa...@gmail.com> 
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I was trying to run Nifi Flume processor with the below mentioned
>>>> details but not could bring it up.
>>>>
>>>> I already started flume with the sample configuration file
>>>> =============================================
>>>> # example.conf: A single-node Flume configuration
>>>>
>>>> # Name the components on this agent
>>>> a1.sources = r1
>>>> a1.sinks = k1
>>>> a1.channels = c1
>>>>
>>>> # Describe/configure the source
>>>> a1.sources.r1.type = netcat
>>>> a1.sources.r1.bind = localhost
>>>> a1.sources.r1.port = 44444
>>>>
>>>> # Describe the sink
>>>> a1.sinks.k1.type = logger
>>>>
>>>> # Use a channel which buffers events in memory
>>>> a1.channels.c1.type = memory
>>>> a1.channels.c1.capacity = 1000
>>>> a1.channels.c1.transactionCapacity = 100
>>>>
>>>> # Bind the source and sink to the channel
>>>> a1.sources.r1.channels = c1
>>>> a1.sinks.k1.channel = c1
>>>> =============================================
>>>>
>>>> Command used to start flume : $ bin/flume-ng agent --conf conf
>>>> --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console
>>>>
>>>> In the Nifi browser of ExecuteFlumeSink following configuration was done:
>>>> Property           Value
>>>> Sink Type         logger
>>>> Agent Name      a1
>>>> Sink Name         k1.
>>>>
>>>> Event is sent to the flume using:
>>>> $ telnet localhost 44444
>>>> Trying 127.0.0.1...
>>>> Connected to localhost.localdomain (127.0.0.1).
>>>> Escape character is '^]'.
>>>> Hello world! <ENTER>
>>>> OK
>>>>
>>>> But I could not get any data in the nifi flume processor. Request your
>>>> help in this.
>>>> Do i need to change the example.conf file of flume so that Nifi Flume
>>>> Sink should get the data.
>>>>
>>>> Thanks and Regards,
>>>> Parul
>>>
>>>
>>>
>>> --
>>> Sent from Gmail Mobile
>>
>>
>

Reply via email to