背景:
公司領導決定將各種基礎數據的導入從代碼中分離出來,用Apache Nifi替換。使開發者們更關注在業務上,而不用關心基礎的由來。
Apache Nifi對於整個團隊都是一個全新的工具,之前大家都沒有接觸過,甚至是第一次聽說,我就是其中之一。但是很幸運的是,領導指派我去熟悉這個工具,按實際應用場製作DEMO,並分享給團隊。
環境準備
- windows:
1、下載nifi zip包:https://nifi.apache.org/download.html ,選擇自己想要的版本。
注意:1.14版本開始,默認爲有身份認證,不允許匿名登陸。
2、將zip包解壓到本地的任意目錄。解壓後如下圖
注意:路徑最好是全英文,否則會出現一些啓動不了的異常
3、修改conf(可選)。爲了避免端口衝突,可以將/conf/nifi.properties中https.port修改爲你指定的其他端口。默認是8443。
另一個是/conf/bootstrap.conf,這裏主要修改JVM memory settings,
默認是512M。
4、啓動nifi.雙擊/bin/run-nifi.bat文件
出現以下畫面即爲成功
注意:如果要退出nifi,千萬不要直接點上圖右上角的“關閉”按鈕。因爲這樣並不會完全退出nifi,它的進程還在運行,端口還是佔用着的,所以下次再次運行時就會出錯。只能殺進程,或是重啓電腦了。正確的操作是ctrl+c停止它
5、打開nifi UI.(距離啓動nifi大概30秒後)
打開/logs/nifi-app.log,搜索username,如下圖
輸入相應的user和password後就可以登陸成功了
-
Linux
linux下就用docker compose演示吧
1、準備好linux和docker環境。這一步大家可以自行搜索
2、定義docker-compose.yml文件,輸入以下內容點擊查看代碼
version: '3' services: nifi: cap_add: - NET_ADMIN # low port bindings image: apache/nifi:1.16.1 container_name: nifi-dev ports: - 18443:18443 # HTTPS interface environment: NIFI_WEB_HTTPS_PORT: "18443" volumes: - ./drivers:/opt/nifi/nifi-current/drivers - ./database_repository:/opt/nifi/nifi-current/database_repository - ./flowfile_repository:/opt/nifi/nifi-current/flowfile_repository - ./content_repository:/opt/nifi/nifi-current/content_repository - ./provenance_repository:/opt/nifi/nifi-current/provenance_repository - ./state:/opt/nifi/nifi-current/state - ./logs:/opt/nifi/nifi-current/logs - ./nifi-conf:/opt/nifi/nifi-current/conf
這裏指定nifi 鏡像爲官方docker image 1.16.1版本,端口爲18443。注意:ports和enviroment兩個設置都不能少。然後把容器裏的相應目錄掛載到了宿主機上docker-compose.yml文件所在目錄。這樣做的好處就是即使是啓動新的鏡像實例,原來的數據還是在的,這樣也就實現了數據持久化。
因爲nifi啓動需要讀取conf目錄下的各種配置,現在這樣conf目錄下是空的。所以啓動時會報nifi.propeties等文件不存在。
有兩種解決方案:一是把conf目錄下的所有文件複製到nifi-conf目錄下。二是conf目錄掛載方式變下,如下:點擊查看代碼
version: '3' services: nifi: cap_add: - NET_ADMIN # low port bindings image: apache/nifi:1.16.1 container_name: nifi-dev ports: - 18443:18443 # HTTPS interface environment: NIFI_WEB_HTTPS_PORT: "18443" volumes: - ./drivers:/opt/nifi/nifi-current/drivers - ./database_repository:/opt/nifi/nifi-current/database_repository - ./flowfile_repository:/opt/nifi/nifi-current/flowfile_repository - ./content_repository:/opt/nifi/nifi-current/content_repository - ./provenance_repository:/opt/nifi/nifi-current/provenance_repository - ./state:/opt/nifi/nifi-current/state - ./logs:/opt/nifi/nifi-current/logs - nifi-conf:/opt/nifi/nifi-current/conf volumes: nifi-conf:
這樣是把conf目錄掛載在/var/lib/docker/volumes目錄下,這樣可以自動生成相應的文件。
3、啓動nifi.docker-compose up (加上-d 就是後臺運行,在終端不會輸出日誌)
在日誌中nifi-app.log中查找 username,獲取相應的user 和password,然後登陸nifi。此步驟與windows相同
至此,nifi的環境已經準備好了。下一篇來講講nifi的身份驗證。