2017-10-01 2 views
1

NiFi가 포함 된 Avro 레코드가 포함 된 플로우 파일을 처리 중이며 HBase에 삽입해야합니다. 이러한 플로우 파일의 크기는 다양하지만, 일부에는 10,000,000 개 이상의 레코드가 있습니다. SplitAvro를 두 번 사용합니다 (하나는 10,000 recs로 분할하고 하나는 rec로 분할). 그런 다음 ExecuteScript 프로세서를 사용하여 HBase의 행 키를 빼내고 flowfile 특성으로 추가합니다. 마지막으로 행 키 속성을 사용하여 HBase에 쓰기 위해 PutHBaseCell (일괄 처리 크기 10,000)을 사용합니다.NiFi로 HBase에 Avro 대량로드

Avro를 1 rec로 분할하는 프로세서는 매우 느립니다 (동시 작업은 5로 설정 됨). 속도를 높이는 방법이 있습니까? 이 Avro 데이터를 HBase에로드하는 더 좋은 방법이 있습니까?

(내가 VM을 만든 2 노드 NiFi (1.2) 클러스터를 (사용하고), 각 노드 (16 개) CPU를 16 기가 바이트 RAM이 있습니다.)

+0

질문의 서식을 지정하고 텍스트의 벽이므로 질문하는 내용이 명확하지 않으므로 질문을 작성하십시오. –

+0

그것은 NiFI에 대해 정말로 나쁜 용도입니다! –

답변

1

가의 일부가 될 새로운 PutHBaseRecord 프로세서가 다음 릴리스 (1.4.0 릴리스가 현재 투표 중입니다).

이 프로세서를 사용하면 플로 파일을 분리하지 않고 플로피 파일을 보내면 수백만 개의 Avro 레코드가 PutHBaseRecord에 전달되고 PutHBaseRecord는 Avro 리더로 구성됩니다.

이 방법을 사용하면 성능이 크게 향상됩니다.