사내 데이터 시각화 Dash Board 운영건을 맡게 되며, Apache NiFi를 활용하여 데이터 마트가 구축된 환경을 접하게 되었다. Nifi를 통해 ETL에 대해 알게 되었으며, 첫 세팅의 발걸음을 통해 뚝딱임을 최소화시켜보자.
Put simply, NiFi was built to automate the flow of data between systems.
While the term 'dataflow' is used in a variety of contexts, we use it here to mean the automated and managed flow of information between systems.
(* ref. Nifi Official Doc Ver2. )
즉, 데이터를 가져오고 처리하여 적재하기 위한 ETL Tool의 일종이다.
여담으로, 카카오세너느 Kafka에서 발생하는 모든 로그에 대하여 NIFI를 통한 로그 파서 과정을 거쳐 사내 Elasticsearch에 메시지를 저장한다고.
Nifi Version : https://archive.apache.org/dist/nifi/1.15.3/
HOME : C:\Nifi\nifi-1.15.3
C:\Nifi\nifi-1.15.3\bin 경로 아래 run-nifi.bat 실행
foreground로 실행되기에 해당 cmd창 출력
(background 실행하려면 nifi.sh를 git bash로 start sh nifi.sh start
)
Nifi 접속 url : https://127.0.0.1:8443/nifi
bash로 실행 시 아래와 같은 에러 발생했었음
Error: Could not find or load main class org.apache.nifi.bootstrap.RunNiFi
https://stackoverflow.com/questions/67771427/cant-start-nifi-in-win10
위 링크 참고하여 nifi 설치 디렉토리 마우스 우클릭 > 속성 > 보안 에서 jeongmin yu 권한을 모든 권한으로 편집
HOME\conf\nifi.properties 파일의 nifi.security.user.login.identify.provider
값을 보면
nifi.security.user.login.identity.provider=single-user-provider
기본적으로 사용자 이름과 비밀번호를 이용하여 사용자를 인증하는 Single User Login Identify Provider를 사용하도록 구성된 것을 알 수 있다.
사용자 이름과 비밀번호의 자동 생성을 지원하며, 그 설정 파일은 NIFI_HOME/conf/login-identity-providers.xml에 해당한다.
<loginIdentityProviders>
<!--
Single User Login Identity Provider supporting automated generation of Username and Password
The provider will write the following log messages when 'Username' and 'Password' are empty:
Generated Username [USERNAME]
Generated Password [PASSWORD]
The 'Username' will be a random UUID and the 'Password' will be stored using bcrypt hashing
-->
<provider>
<identifier>single-user-provider</identifier>
<class>org.apache.nifi.authentication.single.user.SingleUserLoginIdentityProvider</class>
<property name="Username">8dbf8197-0037-4991-b09c-b14addbca92b</property>
<property name="Password">$2b$12$lucr8uWNAlkrv0ZhD3TgDuqh9gUoBKuBybNuj2hZvlp/EMrl58SyC</property>
</provider>
자동생성한 Username과 Password를 확인 가능한데, 보면 password는 해싱되어 있다.
로그 메시지를 통해 비밀번호를 확인할 수 있다.
로그 메시지 경로 : HOME/logs/nifi-app.log
2024-06-11 16:45:12,852 INFO [main] o.a.n.a.s.u.SingleUserLoginIdentityProvider
Generated Username [8dbf8197-0037-4991-b09c-b14addbca92b]
Generated Password [GQOcK4tZPfyEKfG+zqRVDBHjuGNaO++f]
해당 계정으로 로그인을 하면 정상 접속된다.
foreground로 실행되는 cmd에 ctrl+c를 두 번 정도 입력 후 잠시 기다리면 종료하겠냐는 안내 문구 출력