BigData

NIFI 퍼포먼스 분석 및 응용

Kyle79 2020. 11. 17. 09:59

 

m.blog.naver.com/PostView.nhn?blogId=oper13357799&logNo=220939422191&targetKeyword=&targetRecommendationCode=1

 

NiFi로 일몰 일출 배치 작업 수행하기

Intro 오늘은 하는 일이 많아 잡담대신 Intro에서 전체적인 내용에 대해 말씀드려야 겠습니다. 본 포스트...

blog.naver.com

 

1. 각 프로세서의 Concurrent Tasks : 동시 작업 수. 권장 = 3 ~ 5. 아웃풋 프로세스는 30 ~ 50 이어도 괜찮음.

  - ReplaceText 같은 트랜스포메이션 프로세스들은 인/아웃풋 보다 상당한 스펙을 요구함. 10 이 적당.

  - 노드당 최대 쓰레드수라고 봐도 무방.

2. Controllers 설정의 'Thread Count' 들은 일반 설정으로 그냥 둠.

3. List 를 제외한 모든 부분은 'All Node' 로 설정

4. 서브 프로세스 그룹 내에 컨트롤러 서비스를 등록

5. 프로세스 그룹 끼리 Input/Output port 를 통해서 데이터 연동

6. NiFi Queue Swap threshold. default 20,000 

7. 권장 노드수 3 대 이상

8. 권장 사양 4core 8gb ( jvm heap 6gb )

9. 각 Queue Connection Level 에서 여러 클러스터에 대해 로드밸런싱 허용

Load Balance Starategy

  • Do not load balance: 로드밸런스 안함.
  • Round-Robin : 라운드로빈 방식
  • Parition by attribute : 플로우파일에 있는 특정 attribute를 지정하여 그게 같은 값들은 같은 노드로 보내게 해보림
  • Single Node: 원래 쓰던 그 노드로 계속 쓰게 해보림

 

 

community.cloudera.com/t5/Community-Articles/HDF-CFM-NIFI-Best-practices-for-setting-up-a-high/ta-p/244999

 

HDF/CFM NIFI Best practices for setting up a high performance NiFi installation.

HDF or CFM best practices guide to configuring your system and NiFi for high performance dataflows. Note: The recommendation outlined in this article are for the NiFi service and apply whether the NiFi service is being deployed/managed via Ambari, Clouder

community.cloudera.com

 

 

https://jjaesang.github.io/nifi/2019/02/27/nifi-troble-shooting.html

 

데이터 이야기

공부하고 경험한 것들 차근차근 정리하자 :)

jjaesang.github.io

 

 

https://jjaesang.github.io/nifi/2019/03/29/nifi-system-recommend.html

 

데이터 이야기

공부하고 경험한 것들 차근차근 정리하자 :)

jjaesang.github.io

 

 

** Helm

 

github.com/cetic/helm-nifi

 

cetic/helm-nifi

Helm Chart for Apache Nifi. Contribute to cetic/helm-nifi development by creating an account on GitHub.

github.com

 

 

** 수동 노드 삭제

1. Create a dummy pod (to perform some actions) :

$ cat << EOF | kubectl apply -n default -f -
kind: Pod
apiVersion: v1
metadata:
  name: marks-dummy-pod
spec:
  containers:
    - name: marks-dummy-pod
      image: ubuntu
      command: ["/bin/bash", "-ec", "while :; do echo '.'; sleep 5 ; done"]
  restartPolicy: Never
EOF

2. Once the pod is started, open a bash into :

$ kubectl -n default exec -it marks-dummy-pod  -- /bin/bash
(pod)$ apt update 
(pod)$ git clone https://github.com/erdrix/nifi-api-client-python.git
(pod)$ cd nifi-api-client-python

3. Get the url of your nifi LoadBalancer service (outside the the pod):

$ kubectl get service -n <Nifi namespace>

4. Get the last statefulset's nifi node name (during scale down the Statefulset will remove the last one in the sequence) :

(pod)$ python nifi-client-python.py --url http://<nifi-service-external-ip>:<nifi-service-port>/nifi-api --action cluster

**Note : ** The node name should have the following pattern <pod_name>.nifi-headless.<namespace_name>.svc.cluster.local.

 

5. We are now ready to perform the scale down :

(pod)$ python nifi-client-python.py --url http://<nifi-service-external-ip>:<nifi-service-port>//nifi-api --action decommission --node <node_name> --nodePort <pod_port | by default : 8080>
(pod)$ python nifi-client-python.py --url http://<nifi-service-external-ip>:<nifi-service-port>//nifi-api --action remove --node <node_name> 
$ kubectl scale -n <nifi_namespace> sts <nifi_statefulset_name> --replicas=<current_replica_minus_1>

The first call will disconnect the Nifi Node from the cluster, stop all Inputs processors and wait all queues will be drained.
The second one, will remove node from nifi cluster config (which is into zookeeper).
And the last command perform the scale down.

 

Note : This should be performed by an Operator (cloudera have one in closed beta).

'BigData' 카테고리의 다른 글

KEDA  (0) 2020.11.18
Apache Nifi Expression Language Cheat Sheet  (0) 2020.11.17
NIFI JsonTreeReader  (0) 2020.11.16
NiFi로 초당 10 억 개의 이벤트 처리  (0) 2020.11.11
Argo (feat. Jenkins)  (0) 2020.10.29