Member since
05-30-2018
1322
Posts
715
Kudos Received
148
Solutions
My Accepted Solutions
| Title | Views | Posted |
|---|---|---|
| 4067 | 08-20-2018 08:26 PM | |
| 1962 | 08-15-2018 01:59 PM | |
| 2390 | 08-13-2018 02:20 PM | |
| 4138 | 07-23-2018 04:37 PM | |
| 5045 | 07-19-2018 12:52 PM |
03-09-2017
04:53 PM
2 Kudos
I am unable to get SelectHiveQL to start Here is the error: 2017-03-09 16:44:49,968 WARN [Timer-Driven Process Thread-6] org.apache.hive.jdbc.HiveConnection Failed to connect to xxxx.xxxx.hortonworks.com:10010
2017-03-09 16:44:49,968 ERROR [Timer-Driven Process Thread-6] o.a.nifi.dbcp.hive.HiveConnectionPool HiveConnectionPool[id=5571c713-c8d4-1145-0000-000031b86938] Error getting Hive connection
2017-03-09 16:44:49,973 ERROR [Timer-Driven Process Thread-6] o.a.nifi.dbcp.hive.HiveConnectionPool
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not open client transport with JDBC Uri: jdbc:hive2://xxxxx.xxxx.hortonworks.com:10010/default;principal=hive/_HOST@LAKE: GSS initiate failed)
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.nifi.dbcp.hive.HiveConnectionPool.getConnection(HiveConnectionPool.java:288) ~[nifi-hive-processors-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at sun.reflect.GeneratedMethodAccessor1869.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_77]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_77]
at org.apache.nifi.controller.service.StandardControllerServiceProvider$1.invoke(StandardControllerServiceProvider.java:177) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at com.sun.proxy.$Proxy192.getConnection(Unknown Source) [na:na]
at org.apache.nifi.processors.hive.SelectHiveQL.onTrigger(SelectHiveQL.java:158) [nifi-hive-processors-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27) [nifi-api-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1099) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:136) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_77]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_77]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_77]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_77]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_77]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_77]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_77]
Hive transport is set to binary I have tried to set the jdbc connection string using in many ways..ie using ZK or direct. Right now I have it set to jdbc:hive2://xxxx.xxxx.hortonworks.com:10010/default;principal=hive/_HOST@LAKE I have set the kerberos principle to smanjee@FIELD which is my principle and kerberos keytab point to location of my keytab. I have looked at all the way to set hive jdbc here https://community.hortonworks.com/articles/4103/hiveserver2-jdbc-connection-url-examples.html They don't work with nifi. any insights?
... View more
Labels:
- Labels:
-
Apache Hive
-
Apache NiFi
03-09-2017
03:04 PM
try this I found here http://ingest.tips/2015/02/06/use-sqoop-transfer-csv-data-local-filesystem-relational-database/ Using Sqoop1, the data above can be exported to the children table with the following query: sqoop export -fs local -jt local --connect jdbc:mysql://example.com/example --username example --password example --table test --export-dir file:///tmp/data NOTES
-fs local and -jt local are used to reference the local file system and make sqoop run a local MapReduce job The URI prefix file:/// is useful for accessing the local file system /tmp/data/sample.csv should have the same number of columns as the table and map to the appropriate columns based on order You may need to provide -libjars if you’re getting ClassNotFound exceptions.
... View more
03-09-2017
04:03 AM
This is a LOADED question. In this space there is no "Usual" or pattern of implementation. Big data is use case driven and the implementation rules follow the business drivers. From a purely environment perspective it is recommend to have dev/sandbox, UAT, and prod environment. Your business may require DR and that is time to implement one. how would you Implement the Development and Test solution? I not sure I understand but I will take a shot here. the dev cycle and how you implement is based on the tech you use..ie hive, pig, spark, mr, storm, etc. There is not one pattern. Each enterprise follows different dev standards. Testing follows same standards. I have worked with enterprise where they leave it to dev teams to build their own test solution. Other enterprise have a extremely rigorous test definition and how test pass (ie code scanner for threat detection). I hope that helps. Again there is no 1 standard. The implementation is a use case driven and all else follows those rules.
... View more
03-07-2017
08:14 PM
1 Kudo
I suggest you look at this article https://community.hortonworks.com/articles/74335/ambari-server-performance-monitoring-alerts.html It demonstrates how to poll ambari server performance. This will tell you if ambari is up or down and if it is performing well.
... View more
03-07-2017
04:01 PM
Is there any way to reuse NiFi PG or processor UUID while migrating a template from one environment to another?
... View more
Labels:
- Labels:
-
Apache NiFi
03-07-2017
03:59 PM
For example Migrating templates from Dev to Test and maintaining security policies via ranger is difficult as Ranger uses nifi UUID. The UUID changes between environments. Are they plans to this simplify this from a operations perspective? Ie use PG group names --> processor name..
... View more
Labels:
- Labels:
-
Apache NiFi
-
Apache Ranger
03-06-2017
09:50 PM
6 Kudos
Previous article demonstrated how to use nifi rest api to create a template. The objective for this article is to demonstrate how to use NiFi rest api to change a work flow on a secured cluster real time without service disruption or downtime. Use Case A process group named CICD is a active data flow (data is flowing through it) and a new processor will be added at the end of a flow without application disruption or downtime. Comments in the picture above. Steps Create Access Token Create Client ID Fetch Process Group attributes (process group which the changes will be applied to) Create LogAttribute Processor Fetch the UUID of the UpdateAttribute processor
Why? Data will flow from this existing processor into newly added LogAttribute Processor
Link LogAttribute & UpdateAttribute via success relationship Update LogAttribute to terminate on success relationship Steps 1 & 2 & 3 These steps are described here so no reason to copy and paste. Step 4 - Create LogAttribute Processor payload {
"revision": {
"clientId": "556f3dcf-c8d4-1145-0d1b-539ef89a01da",
"version": 0
},
"component": {
"type": "org.apache.nifi.processors.standard.LogAttribute",
"name": "LogAttribute",
"position": {
"x": 1406.2231010674523,
"y": 1243.8565539964334
}
}
} API /nifi-api/process-groups/YourProcessGroupUUID/processors My process group UUID is a522b679-015a-1000-0000-00003f33fd93 Post curl -X POST -H "Accept: application/json, text/javascript, */*; q=0.01" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9" -H "Connection: keep-alive" -H "Content-Length: 229" -H "Content-Type: application/json" -H "Host: nifi.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" -d '{"revision":{"clientId":"556f3dcf-c8d4-1145-0d1b-539ef89a01da","version":0},"component":{"type":"org.apache.nifi.processors.standard.LogAttribute","name":"LogAttribute","position":{"x":1406.2231010674523,"y":1243.8565539964334}}}' https://nifi.com:9091/nifi-api/process-groups/a522b679-015a-1000-0000-00003f33fd93/processors| gunzip Returns large json payload which include UUID of the newly created processor (LogAttribute) The new added processor will be displayed on the UI Step 5 - Fetch the UUID of the UpdateAttribute processor Fetch the UUID of the UpdateAttribute processor. In the next step a link (via success relationship) between the newly created LogAttribute processor to UpdateAttribute will be established through their respective UUID API /nifi-api/flow/process-groups/YourProcessGroupUUID Post curl -X GET -H "Accept: */*" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9" -H "Connection: keep-alive" -H "Host: nifi.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" https://nifi.com:9091/nifi-api/flow/process-groups/a522b679-015a-1000-0000-00003f33fd93 | gunzip This will return large json message "processGroupFlow": {
"id": "a522b679-015a-1000-0000-00003f33fd93",
..........
}
},
"flow": {
....
"component": {
"id": "08873906-c9ca-1190-8376-b863cef4e797",
....
"name": "UpdateAttribute",
"type": "org.apache.nifi.processors.attributes.UpdateAttribute",
"state": "RUNNING",
... The UUID for UpdateAttribute processor is (Yours will be different) 08873906-c9ca-1190-8376-b863cef4e797 Step 6 - Link LogAttribute & UpdateAttribute via success relationship
Payload {
"revision": {
"clientId": "556f3dca-c8d4-1145-2ac4-3e59aa43f6ec",
"version": 0
},
"component": {
"name": "",
"source": {
"id": "08873906-c9ca-1190-8376-b863cef4e797",
"groupId": "a522b679-015a-1000-0000-00003f33fd93",
"type": "PROCESSOR"
},
"destination": {
"id": "556f687a-c8d4-1145-0000-000032d88e41",
"groupId": "a522b679-015a-1000-0000-00003f33fd93",
"type": "PROCESSOR"
},
"selectedRelationships": [
"success"
],
"flowFileExpiration": "0 sec",
"backPressureDataSizeThreshold": "1 GB",
"backPressureObjectThreshold": "10000",
"bends": [],
"prioritizers": []
}
} Source is the existing processor (UpdateAttribute) we want the flow files from and the destination is the newly added processor (LogAttribute) API /nifi-api/process-groups/ProcessGroupUUID/connections Post curl -X POST -H "Accept: application/json, text/javascript, */*; q=0.01" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9=" -H "Connection: keep-alive" -H "Content-Length: 522" -H "Content-Type: application/json" -H "Host: hnifi.com:9091"
-H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" -d '{"revision":{"clientId":"556f3dcf-c8d4-1145-0d1b-539ef89a01da","version":0},"component":{"name":"","source":{"id":"08873906-c9ca-1190-8376-b863cef4e797","groupId":"a522b679-015a-1000-0000-00003f33fd93","type":"PROCESSOR"},"destination":{"id":"556f687a-c8d4-1145-0000-000032d88e41","groupId":"a522b679-015a-1000-0000-00003f33fd93","type":"PROCESSOR"},"selectedRelationships":["success"],"flowFileExpiration":"0 sec","backPressureDataSizeThreshold":"1 GB","backPressureObjectThreshold":"10000","bends":[],"prioritizers":[]}}' https://nifi.com:9091/nifi-api/process-groups/a522b679-015a-1000-0000-00003f33fd93/connections | gunzip Through the UI the newly added processor (LogAttribute) is linked to existing UpdateAttribute processor. Notice the LogAttribute has a yellow caution democratization on the top left. The processor requires action on the success relationship. For this example success relationship will be set to terminate..meaning no other work beyond LogAttribute is required. Step 7 - Update LogAttribute to terminate on success relationship
Set auto terminate on success for the newly added processor API /nifi-api/processors/ProcessorUI PUT curl -X PUT -H "Accept: application/json, text/javascript, */*; q=0.01" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9" -H "Connection: keep-alive" -H "Content-Length: 522" -H "Content-Type: application/json" -H "Host: nifi.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" -d '{"component":{"id":"556f687a-c8d4-1145-0000-000032d88e41","name":"LogAttribute","config":{"concurrentlySchedulableTaskCount":"1","schedulingPeriod":"0 sec","executionNode":"ALL","penaltyDuration":"30 sec","yieldDuration":"1 sec","bulletinLevel":"WARN","schedulingStrategy":"TIMER_DRIVEN","comments":"","autoTerminatedRelationships":["success"]},"state":"STOPPED"},"revision":{"clientId":"556f3dcf-c8d4-1145-0d1b-539ef89a01da","version":5}}' https://nifi.com:9091/nifi-api/processors/556f687a-c8d4-1145-0000-000032d88e41 | gunzip The UI will show logattribute is in "stopped" status and the "Automatically Terminate Relationships" success is checked off. Step 8 - Start the processor Payload {
"revision": {
"clientId": "a556f3dce-c8d4-1145-ff5c-6c6f302bd804",
"version": 5
},
"component": {
"id": "556f5bc4-c8d4-1145-0000-000059ff8789",
"state": "RUNNING"
}
}
id = processor UUID API /nifi-api/processors/ProcessorUI PUT curl -X PUT -H "Accept: application/json, text/javascript, */*; q=0.01" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9" -H "Connection: keep-alive" -H "Content-Length: 522" -H "Content-Type: application/json" -H "Host: nifi.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" -d '{"revision":{"clientId":"556f3dcf-c8d4-1145-0d1b-539ef89a01da","version":5},"component":{"id":"556f687a-c8d4-1145-0000-000032d88e41","state":"RUNNING"}}' https://nifi.com:9091/nifi-api/processors/556f687a-c8d4-1145-0000-000032d88e41 | gunzip Picture belows shows the flow has been updated via rest api real time without any disruption or stoppage of workflow. Note - All of the actions described in this article may be performed via UI.
... View more
Labels:
03-06-2017
05:29 PM
8 Kudos
The objective of this article is to clearly demonstrate how to use NiFi's REST API to create a template on a secured cluster. I plan to publish multiple articles on using NiFi rest api based on community feedback around the use cases in the field. No pie in the sky type of knowledge share. Adding complexity to the workflows as I publish new articles and how they look via rest api publishing.
Use Case Setup:
Create template of my process group UVindex via rest api. UVindex resides within a process group hierarchy
Root->SunileManjeeProcessGroup->RestAPI Test->UNIndex
UNindex is a simply process groups which polls Chiago uv index data every 5 minutes and stores on hdfs. CurrentWeatherData is in the same process group but for this use case I only want to create template for UVIndex process group.
Steps
Fetch Access Token
Fetch Client ID
Fetch Process Group attributes
Create Snippet
Create Template
Step 1 - Fetch Access Token
Access token is required for rest api interactions on secured nifi cluster. Token will be used in the header for all rest api interactions
-H "Authorization: Bearer myLongToken
API
/nifi-api/access/token
Fetch Access Token
curl -X POST -H "Accept: */*" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Connection: keep-alive" -H "Content-Length: 38" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Host: https://nifi.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" -d 'username=myUserName&password=YourPasswordHere' https://nifi.com:9091/nifi-api/access/token | gunzip
Step 2
Fetch your client ID
. Client ID will be used for all rest api interactions
curl -X GET -H "Accept: */*" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJjbj1" -H "Connection: keep-alive" -H "Host: hdf20-0.field.hortonworks.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" https://nifi.com:9091/nifi-api/flow/client-id | gunzip
Step 3- Fetch Process Group Attributes
Fetch the UUID of the process group. To create a template a UUID of the object you want to create a template for is required. API
/flow/process-groups/parentProcessGroupUUID
Or Rest API..Here my parent process group UUID is
8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a
Fetch Process Group Info
curl -X GET -H "Accept: */*" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJjbj1OaUZpIFVzZXI" -H "Connection: keep-alive" -H "Host: https://nifi.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" https://nifi.com:9091/nifi-api/flow/process-groups/8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a | gunzip
Which returns large json object. Here you can parse the json object for the name of the process group (UVindex) and grab the
UUID and version.
Step 4 - Create Snippet
To create a template, first a snippet must be created
. The snippet ID will be used to name and create template. All details of what a template should be composed of are within a snippet
API
/nifi-api/snippets
For the payload populate PartentGroupID using the parent process group UUID. Under "processGroups" populate with UUID of the process group you want to create a template of, your client ID, and version captured in step 3. You may have connections or other objects which may require values within the payload. For this template it does not. In follow up articles I will create higher complexity work flows which will require such objection to be populated during snippet creation.
{
"snippet": {
"parentGroupId": "8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a",
"processors": {},
"funnels": {},
"inputPorts": {},
"outputPorts": {},
"remoteProcessGroups": {},
"processGroups": {
"d8b73f15-e918-1afc-9db2-e7cdfbf19076": {
"clientId": "980e3bca-b76a-183f-2e3b-5e75dccd3aec",
"version": 1
}
},
"connections": {},
"labels": {}
}
}
Example
curl -X POST -H "Accept: application/json, text/javascript, */*; q=0.01" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzd" -H "Connection: keep-alive" -H "Content-Length: 305" -H "Content-Type: application/json" -H "Host: nifi.com:9091" -H "Referer: https://hdf20-0.field.hortonworks.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" -d '{"snippet":{"parentGroupId":"8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a","processors":{},"funnels":{},"inputPorts":{},"outputPorts":{},"remoteProcessGroups":{},"processGroups":{"d8b73f15-e918-1afc-9db2-e7cdfbf19076":{"clientId":"980e3bca-b76a-183f-2e3b-5e75dccd3aec","version":1}},"connections":{},"labels":{}}}' https://nifi.com:9091/nifi-api/snippets | gunzip
Output
{
"snippet": {
"id": "980e46c5-b76a-183f-ffff-ffffb4770059",
"uri": "https://nifi.com:9091/nifi-api/process-groups/8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a/snippets/980e46c5-b76a-183f-ffff-ffffb4770059",
"parentGroupId": "8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a",
"processGroups": {
"d8b73f15-e918-1afc-9db2-e7cdfbf19076": {
"clientId": "980e3bca-b76a-183f-2e3b-5e75dccd3aec",
"version": 1
}
},
"remoteProcessGroups": {},
"processors": {},
"inputPorts": {},
"outputPorts": {},
"connections": {},
"labels": {},
"funnels": {}
}
}
Fetch the snippet ID from the output
Step 5 - Create Template
Using the snippet ID from step 4 create a template named "My Template"
Payload
{
"name": "My Template",
"description": "",
"snippetId": "980e46c5-b76a-183f-ffff-ffffb4770059"
}
API
/nifi-api/process-groups/ParentProcessGroupUUID/templates
Example
curl -X POST -H "Accept: application/json, text/javascript, */*; q=0.01" -H "Accept-Encoding: gzip" -H "Accept-Language: en-US,en;q=0.5" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJz" -H "Connection: keep-alive" -H "Content-Length: 90" -H "Content-Type: application/json" -H "Host: nifi.com:9091" -H "Referer: https://nifi.com:9091/nifi/login" -H "X-Requested-With: XMLHttpRequest" -d '{"name":"My Template","description":"","snippetId":"980e46c5-b76a-183f-ffff-ffffb4770059"}' https://nifi.com:9091/nifi-api/process-groups/8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a/templates | gunzip
Which returns
{
"template": {
"uri": "https://nifi.com:9091/nifi-api/templates/e3cad030-733e-3568-b7f5-90b2457e1637",
"id": "e3cad030-733e-3568-b7f5-90b2457e1637",
"groupId": "8c3d29aa-d1ea-1c85-ffff-ffffe6b3853a",
"name": "My Template",
"description": "",
"timestamp": "03/05/2017 05:29:21 UTC",
"encoding-version": "1.0"
}
}
In the NiFi UI you will see the newly created template
... View more
Labels:
03-04-2017
03:20 AM
1 Kudo
on a kerberized cluster i am getting the following error using livy interpreter doing simple sc.version. I ran same sc.version using %spark interpreter with no issues Error running rest call; nested exception is org.springframework.web.client.HttpClientErrorException: 403 Forbidden
My livy interpreter setting I have viewed other post on HCC with similar issue. The settings i have displayed above seem to be ok unless someone sees an issue with it.
... View more
Labels:
- Labels:
-
Apache Spark
-
Apache Zeppelin
03-03-2017
05:16 PM
@Matt Clarke I believe this answers my question but need to confirm. New nodes to the remote cluster can be added real time without any downtime and the RPG will be updated with list of all available nodes including any new nodes added. Again important this happens real time without any downtime. please confirm.
... View more