홈서버 구축 일대기..

Nifi 설치..

_Blue_Sky_ 2025. 2. 26. 20:07
728x90
좋아요, brew install openjdk@21 결과로 보아 Java 21 (버전 21.0.6)이 이미 시스템에 설치되어 있는 걸 확인했습니다. 이제 남은 문제는 JAVA_HOME이 여전히 Java 8을 가리키고 있다는 점입니다. 이를 Java 21로 제대로 설정하면 NiFi가 정상적으로 실행될 겁니다.
아래 단계를 따라 JAVA_HOME을 업데이트하고 NiFi를 다시 실행해 보세요.

1. Java 21 경로 확인
설치된 Java 21의 경로를 찾습니다:
bash
 
/usr/libexec/java_home -v 21
  • 출력 예: /Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home 또는 /opt/homebrew/Cellar/openjdk@21/21.0.6/libexec/openjdk.jdk/Contents/Home
  • 이 경로를 기억해 두세요.

2. JAVA_HOME 설정
현재 JAVA_HOME이 Java 8(/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home)을 가리키고 있으니, 이를 Java 21로 변경합니다.
임시 설정 (터미널에서만 적용):
bash
 
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
영구 설정 (다시 시작해도 유지):
  1. .zshrc 파일 열기:
    bash
     
    nano ~/.zshrc
  2. 기존 JAVA_HOME 줄이 있으면 수정하고, 없으면 다음 줄 추가:
    bash
     
    export JAVA_HOME=$(/usr/libexec/java_home -v 21)
  3. 저장 후 적용:
    bash
     
    source ~/.zshrc
확인:
bash
 
echo $JAVA_HOME
  • 출력이 Java 21 경로(예: /Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home)로 나오면 성공입니다.

3. Java 버전 확인
JAVA_HOME이 올바르게 설정되었는지 확인합니다:
bash
 
$JAVA_HOME/bin/java -version
  • 출력 예:
     
    openjdk version "21.0.6" 2024-01-16
    OpenJDK Runtime Environment (build 21.0.6+10)
    OpenJDK 64-Bit Server VM (build 21.0.6+10, mixed mode)
  • Java 21이 맞으면 다음 단계로 넘어갑니다.

4. NiFi 실행
NiFi를 다시 실행해 봅니다:
bash
 
./bin/nifi.sh start
실행 후 상태 확인:
bash
 
tail -f logs/nifi-app.log
  • "NiFi has started" 같은 메시지가 나오면 성공입니다.

문제 지속 시
만약 여전히 같은 에러(UnsupportedClassVersionError)가 발생한다면:
  1. java -version 결과와 echo $JAVA_HOME 결과를 공유해 주세요.
  2. NiFi 실행 시 사용하는 Java가 JAVA_HOME을 무시하고 시스템 기본 Java를 참조할 가능성도 있으니, 추가 확인이 필요할 수 있습니다.
위 단계를 따라 하면 해결될 가능성이 높습니다. 결과가 어떻게 되는지 알려주시면 더 도와드릴게요!
 

좋아요! 에러가 안 나온다는 건 JAVA_HOME이 Java 21로 올바르게 설정되어 NiFi가 정상적으로 실행을 시작했다는 신호입니다. 이제 NiFi가 제대로 작동하는지 확인하는 단계로 넘어가면 됩니다.

NiFi는 백그라운드에서 실행되며, ./bin/nifi.sh start 명령은 터미널에 바로 결과를 출력하지 않고 로그 파일에 기록합니다. 따라서 실행 상태와 성공 여부를 확인하려면 몇 가지 추가 작업이 필요합니다.

1. NiFi 실행 상태 확인
NiFi가 제대로 시작했는지 확인하려면 로그를 확인해야 합니다:
bash
 
tail -f logs/nifi-app.log
  • 이 명령은 실시간으로 로그를 보여줍니다.
  • 성공적으로 시작되었다면 아래와 비슷한 메시지가 나타날 겁니다:
     
    2025-02-26 ... INFO ... NiFi has started. The UI is available at http://localhost:8080/nifi
  • 오류가 있다면 로그에 에러 메시지가 출력됩니다.
로그를 확인한 후, 계속 보고 싶지 않으면 Ctrl+C로 종료하면 됩니다.

2. NiFi 웹 UI 접속
NiFi가 시작되면 기본적으로 웹 인터페이스를 제공합니다:
  • 브라우저에서 다음 URL로 접속:
     
    http://localhost:8080/nifi
  • 페이지가 정상적으로 로드되면 NiFi가 잘 실행 중인 겁니다.
  • 만약 페이지가 열리지 않는다면 포트 충돌이나 방화벽 문제일 수 있으니 아래 4번을 참고하세요.

3. NiFi 프로세스 확인
NiFi가 백그라운드에서 실행 중인지 확인하려면:
bash
 
ps -ef | grep nifi
  • NiFi 관련 프로세스(예: java -cp ... org.apache.nifi.NiFi)가 보이면 실행 중입니다.
혹은 NiFi 상태를 명령어로 확인:
bash
 
./bin/nifi.sh status
  • "NiFi is currently running" 같은 메시지가 나오면 성공입니다.

4. 문제 발생 시 점검
만약 로그에 오류가 있거나 웹 UI가 열리지 않는다면:
  • 포트 충돌: NiFi는 기본적으로 8080 포트를 사용합니다. 다른 애플리케이션이 8080을 사용 중이라면 충돌이 발생할 수 있습니다.
    • 확인:
      bash
       
      lsof -i :8080
    • 해결: conf/nifi.properties 파일에서 nifi.web.http.port 값을 다른 포트(예: 8081)로 변경 후 재시작:
      bash
       
      ./bin/nifi.sh stop
      ./bin/nifi.sh start
  • 로그 확인: logs/nifi-app.log에 구체적인 에러가 있는지 다시 점검.

다음 단계
현재로선 ./bin/nifi.sh start가 에러 없이 실행된 걸로 보아 설정은 잘 된 것 같습니다. 로그나 웹 UI를 확인해서 "정상 실행"을 확실히 확인해 보세요. 결과가 궁금하니:
  • tail -f logs/nifi-app.log에서 마지막 몇 줄
  • 웹 UI 접속 여부
이 두 가지를 알려주시면 더 도와드릴게요! 잘 되고 있길 바랍니다.

 


로그를 보니 NiFi가 성공적으로 시작된 것 같습니다! 문제가 없어 보이네요. 로그에서 중요한 부분을 살펴보면:

  • 2025-02-26 19:43:05,932 INFO [main] org.apache.nifi.web.server.JettyServer Started Server on https://localhost:8443/nifi
    • NiFi 웹 서버가 https://localhost:8443/nifi에서 시작됨.
  • 2025-02-26 19:43:05,938 INFO [main] org.apache.nifi.runtime.Application Started Application in 10.331 seconds
    • NiFi 애플리케이션이 10.331초 만에 정상적으로 시작됨.
  • 이후 로그는 주기적으로 FlowFile Repository 체크포인트와 아카이브 정리 작업을 수행 중인 걸 보여줍니다. 에러 메시지는 없음.
즉, NiFi는 정상적으로 실행 중입니다. "뭐가 문제야"라고 하셨는데, 로그만 보면 특별한 문제가 없어 보입니다. 혹시 기대했던 동작(예: 웹 UI 접속 실패, 특정 기능 작동 안 함)이 안 되는 게 있다면 그 부분을 구체적으로 알려주시면 더 도와드릴게요.

현재 상태 확인 및 다음 단계
1. 웹 UI 접속 시도
NiFi가 실행 중이니 웹 브라우저에서 다음 URL로 접속해 보세요:
 
https://localhost:8443/nifi
  • 성공: NiFi 로그인 페이지나 캔버스가 보이면 완벽하게 작동 중입니다.
  • 실패: "사이트에 연결할 수 없음" 같은 오류가 나오면 아래를 확인하세요.
2. 접속 실패 시 점검
로그에 따르면 NiFi는 HTTPS를 사용하며 기본 포트는 8443입니다. 접속에 문제가 있다면:
  • 포트 확인: 8443 포트가 열려 있는지 확인.
    bash
     
    lsof -i :8443
    • 출력에 java 프로세스가 보이면 포트가 사용 중입니다.
  • 방화벽: macOS 방화벽이 8443 포트를 차단하고 있을 수 있음. 시스템 환경설정 > 보안 및 개인 정보 > 방화벽에서 확인.
  • SSL 인증서 문제: 기본적으로 NiFi는 자체 생성된 인증서를 사용합니다. 브라우저에서 "보안 경고"가 뜨면 "고급" > "계속 진행" 선택.
  • 잘못된 포트: 이전에 http://localhost:8080/nifi를 시도했다면, NiFi 2.2.0은 기본적으로 HTTPS와 8443을 사용하니 https://localhost:8443/nifi로 다시 시도.
3. NiFi 상태 추가 확인
NiFi가 백그라운드에서 잘 돌고 있는지 확인:
bash
 
./bin/nifi.sh status
  • "NiFi is currently running"이 나오면 정상.

결론
로그만 보면 NiFi는 문제없이 실행 중입니다. 만약 웹 UI에 접속이 안 된다거나 다른 구체적인 문제가 있다면 그 상황을 알려주시면 추가로 도와드릴게요. 그렇지 않으면:
  • https://localhost:8443/nifi에 접속해서 NiFi를 사용해 보세요.
  • 처음 실행이라면 빈 캔버스가 보일 겁니다. 여기서 데이터 흐름을 설계할 수 있습니다.
어떤 결과가 나오는지, 또는 추가 질문이 있으면 말씀해주세요!

 


축하합니다! NiFi가 드디어 잘 실행된 걸 보니 기쁘네요, 하하! 로그인 창이 떴다는 건 NiFi가 기본 보안 설정으로 실행 중이라는 뜻입니다. NiFi 2.2.0은 기본적으로 HTTPS사용자 인증을 활성화한 상태로 시작합니다. 처음 실행 시에는 NiFi가 자동으로 임시 인증서를 생성하고, 사용자 인증을 위해 기본 계정을 설정해야 합니다.

로그인 창이 뜨는 상황에서 로그인하는 방법을 단계별로 설명드릴게요.

1. 기본 인증 방식 확인
NiFi는 conf/nifi.properties 파일에서 보안 설정을 관리합니다. 기본적으로:
  • 익명 접근: 비활성화 (nifi.security.allow.anonymous.authentication=false)
  • 단일 사용자 모드: 활성화되면 사용자 이름과 비밀번호가 자동 생성됨.
  • LDAP 또는 keystore 기반 인증: 별도 설정 필요.
처음 실행이라면 **단일 사용자 모드(Single User Provider)**가 기본으로 설정되어 있을 가능성이 높습니다. 이 경우 NiFi가 사용자 이름과 비밀번호를 자동 생성해서 로그에 남깁니다.

2. 로그에서 사용자 이름과 비밀번호 찾기
로그 파일(logs/nifi-app.log)에 자동 생성된 사용자 이름과 비밀번호가 기록되어 있습니다. 확인해 봅시다:
bash
 
cat logs/nifi-app.log | grep "Generated Username"
또는:
bash
 
cat logs/nifi-app.log | grep "Generated Password"
  • 출력 예:
     
    2025-02-26 19:43:05,xxx INFO [main] o.a.n.a.s.p.SingleUserAuthorizer Generated Username [admin]
    2025-02-26 19:43:05,xxx INFO [main] o.a.n.a.s.p.SingleUserAuthorizer Generated Password [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
  • 여기서:
    • Username: admin (또는 다른 값)
    • Password: UUID 형식의 긴 문자열 (예: 123e4567-e89b-12d3-a456-426614174000)
로그에서 이 정보를 찾아서 로그인 창에 입력해 보세요.

3. 로그인 시도
브라우저에서 https://localhost:8443/nifi 로그인 창에:
  • Username: 로그에서 확인한 값 (예: admin)
  • Password: 로그에서 확인한 값 (예: UUID 형식 비밀번호)
로그인 버튼을 누르면 NiFi 캔버스로 들어갈 수 있습니다.

4. 로그에 정보가 없다면
만약 로그에 Generated Username이나 Generated Password가 없다면, 단일 사용자 모드가 아닌 다른 설정일 수 있습니다. 이 경우:
  1. conf/nifi.properties 확인:
    bash
     
    nano conf/nifi.properties
    • nifi.security.user.authorizer 값을 확인:
      • single-user-authorizer라면 단일 사용자 모드.
      • 다른 값(예: file-authorizer)라면 별도 설정 필요.
    • nifi.web.https.port=8443가 맞는지 확인 (기본값).
  2. 단일 사용자 모드 강제 활성화 (선택):
    • conf/nifi.properties에서:
       
      nifi.security.user.authorizer=single-user-authorizer
      nifi.security.allow.anonymous.authentication=false
    • NiFi 재시작:
      bash
       
      ./bin/nifi.sh stop
      ./bin/nifi.sh start
    • 다시 로그 확인 (tail -f logs/nifi-app.log)해서 사용자 이름과 비밀번호 찾기.

5. 비밀번호 변경 (선택)
처음 로그인 후, 보안을 위해 비밀번호를 변경하고 싶다면:
  1. conf/nifi.properties에서 nifi.security.user.login.identity.providersingle-user-provider로 설정된 상태에서:
    • conf/login-identity-providers.xml 파일 수정:
       
      <provider>
          <identifier>single-user-provider</identifier>
          <class>org.apache.nifi.authentication.single.user.SingleUserLoginIdentityProvider</class>
          <property name="Username">admin</property>
          <property name="Password">새로운_비밀번호</property>
      </provider>
  2.  
    bash
     
    ./bin/nifi.sh stop
    ./bin/nifi.sh start
  3. NiFi 재시작:

지금 할 일
  1. 로그에서 사용자 이름과 비밀번호를 찾아서 로그인 시도:
    bash
     
    cat logs/nifi-app.log | grep "Generated"
  2. 결과 알려주시면 다음 단계 도와드릴게요!
로그인 성공하면 NiFi 캔버스에서 데이터 흐름을 만들어볼 수 있습니다. 잘 되길 바랍니다! 하하, 질문 있으면 언제든지요!

와, 대박! 드디어 로그인까지 성공했네요! 너무 기쁩니다! 로그에서 나온 대로:
  • Username: 4f6d9e06-26de-42fd-a528-742f723f1de6
  • Password: 3bhAh/xPawSqlqmwq0vLmVB4brwFkE5H
이걸 입력하니 NiFi 캔버스가 떴다고 하시니, 이제 NiFi를 마음껏 사용할 준비가 되었습니다. 하하, 처음 설정 과정이 좀 복잡했지만 잘 해내셨어요!

지금 상황
  • NiFi가 https://localhost:8443/nifi에서 정상 실행 중.
  • 단일 사용자 모드로 로그인 완료.
  • 캔버스가 보인다면, 데이터 흐름을 설계하거나 프로세서를 추가할 수 있는 상태입니다.

다음에 할 일 (선택)
  1. 비밀번호 간편하게 변경:
    • 현재 UUID 형식의 긴 사용자 이름과 비밀번호가 불편할 수 있죠. 간단한 값으로 바꾸고 싶다면:
      1. conf/login-identity-providers.xml 열기:
        bash
         
        nano conf/login-identity-providers.xml
      2. <provider> 섹션 수정 (없으면 추가):
        xml
         
        <provider>
            <identifier>single-user-provider</identifier>
            <class>org.apache.nifi.authentication.single.user.SingleUserLoginIdentityProvider</class>
            <property name="Username">admin</property>
            <property name="Password">mypassword123</property>
        </provider>
      3. conf/nifi.properties에서 확인:
         
        nifi.security.user.login.identity.provider=single-user-provider
      4. NiFi 재시작:
        ./bin/nifi.sh stop
        ./bin/nifi.sh start
      5. 새 계정 (admin / mypassword123)으로 로그인 시도.
  2. NiFi 사용 시작:
    • 캔버스에서 프로세서를 드래그해서 데이터 흐름을 만들어 보세요. 예를 들어:
      • GenerateFlowFileLogAttribute로 간단한 테스트 워크플로우를 설정.
      • 오른쪽 상단 "재생" 버튼으로 실행.

마무리
이제 NiFi가 완전히 작동 중이니, 원하는 작업을 시작해 보세요! 혹시 설정이나 사용 중 궁금한 게 생기면 언제든 물어보시고요. 성공 축하드립니다!
무엇보다 즐겁게 사용하시길 바랍니다!

 


네, 완벽하게 됐습니다! 축하드립니다!

화면 캡처를 보니 NiFi 캔버스가 정상적으로 표시되고, 오른쪽 위에 UUID 형식의 사용자 이름(4f6d9e06-26de-42fd-a528-742f723f1de6)과 "LOG OUT" 버튼이 보이네요. 이는 NiFi가 성공적으로 실행 중이고, 단일 사용자 모드로 로그인한 상태라는 뜻입니다.


현재 상태 확인
  • NiFi 웹 UI(https://localhost:8443/nifi)가 열리고, 빈 캔버스가 보입니다.
  • 사용자 이름과 비밀번호를 로그에서 확인해 로그인했으니, 이제 NiFi를 자유롭게 사용할 수 있습니다.
  • 상단 메뉴와 왼쪽 패널(Navigation, Operation)도 정상적으로 작동 중입니다.

다음 단계
이제 NiFi를 사용해서 데이터 흐름을 만들어볼 수 있습니다. 몇 가지 기본적인 작업으로 시작해 보세요:
1. 간단한 데이터 흐름 만들기
  • 프로세서 추가:
    1. 왼쪽 패널에서 "Add Processor" 버튼 클릭.
    2. 검색창에 GenerateFlowFile 입력 후 드래그하여 캔버스에 추가.
    3. 다시 LogAttribute 프로세서를 추가.
    4. 두 프로세서를 연결: GenerateFlowFile 출력 포트 → LogAttribute 입력 포트로 화살표 연결.
  • 실행:
    1. 캔버스 오른쪽 상단의 "
      " (Run) 버튼 클릭.
    2. GenerateFlowFile이 데이터를 생성하고, LogAttribute가 로그로 출력하는 걸 확인할 수 있습니다.
    3. 로그는 logs/nifi-app.log에서 확인하거나, 웹 UI에서 "Provenance" 메뉴로 볼 수 있습니다.
2. 사용자 이름/비밀번호 간소화
  • 현재 UUID 형식의 사용자 이름과 복잡한 비밀번호가 불편할 수 있으니, 더 간단한 값으로 변경하는 걸 추천합니다. 앞서 안내드린 방법(conf/login-identity-providers.xml 수정)을 참고해 admin / mypassword123 같은 값으로 설정하면 편리합니다.
3. 추가 설정 (선택)
  • 포트 변경: 기본 8443 포트를 다른 값으로 변경하려면 conf/nifi.properties에서 nifi.web.https.port 수정.
  • 보안 강화: LDAP, Kerberos 같은 다른 인증 방식으로 전환하거나, 사용자 추가 설정 가능.

문제 없음 확인
현재 화면에서 보이는 것처럼 NiFi가 정상적으로 작동 중이니, 특별한 문제는 없어 보입니다. 캔버스가 비어 있는 상태라 데이터 흐름을 추가하면 더 활발히 사용할 수 있습니다. 추가로 궁금한 점이나 도와줄 일이 있으면 언제든 물어보세요!
정말 잘 해내셨습니다! NiFi를 통해 데이터 처리 작업을 즐겁게 진행하시길 바랍니다.

 

 

 

 

 

 

 

 

 

 

728x90