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. This problem space has been around ever since enterprises had more than one system, where some of the systems created data and some of the systems consumed data. The problems and solution patterns that emerged have been discussed and articulated extensively. A comprehensive and readily consumed form is found in the Enterprise Integration Patterns
⇧ システム間のデータの流れ(データフロー)を、自動化してくれるツールらしいです。「データフローオーケストレーションツール」というものの1つらしいです。どうもボクです。
ちなみに、読み方は、「アパッチ ナイファイ」らしいっす。
Apache NiFiは2014年秋のNSA Technology Transfer Programが起源となっています。 NiFiは2015年7月にApache公式プロジェクトの一つとなりました。
Apache NiFi Dataflow Automation Concepts · ijokarumawak/hdf-tutorials-ja Wiki · GitHub
⇧ とあるように、
⇧ 米国家安全保障局の開発プロジェクトが、発祥らしいっす。
中央情報局(CIA)がおもにヒューミント(HUMINT; human intelligence)と呼ばれるスパイなどの人間を使った諜報活動を担当するのに対し、NSAはシギント(SIGINT; signal intelligence)と呼ばれる電子機器を使った情報収集活動とその分析、集積、報告を担当する。
⇧ 人による情報収集か、機器による情報収集か、それが問題だ、ということですかね。
その性質上諸外国に関する非常に高度な機密(一説では、大統領権限ですらアクセスできないレベルの情報も扱うと言われる)を扱うため、組織や活動内容、予算については明らかにされていない部分も多い。以前は組織の存在そのものすら国民に対しても公然ではなく「Never Say Anything(何も喋るな)」「No Such Agency(そんな部署はない)」の略だ、などというお決まりのジョークがあった。
⇧ そんなジョーク言ったら、抹殺されるんでないの...お~、怖っ!
⇧ メリーランド州 と言えば、
メリーランドはアメリカ独立戦争でイギリス支配に対して反旗を翻した13植民地の1つとなった。1781年2月2日、メリーランドは連合規約を批准した13番目の州となった。このことによりアメリカ合衆国は統合され、主権を持った国家になった。
⇧ アメリカ合衆国が生まれた時の13州のうちの、最後に参画した州らしいっす。
⇧ う~ん、日本の原爆が関係してるんかな?
というのも、NSAの創設に関与したのが、
ハリー・S・トルーマン(英語: Harry S. Truman、1884年5月8日 - 1972年12月26日)は、アメリカ合衆国の政治家。上院議員、第34代副大統領、第33代大統領を歴任した。フランクリン・ルーズベルトの死を受けて1945年に副大統領から大統領に昇格した。第二次世界大戦の終了から冷戦の始まり、国際連合、CIA、NSA、ペンタゴン(国防総省)の創設および朝鮮戦争などに関与した。
⇧ ハリー・S・トルーマン っていう大統領らしいんだけど、
白人至上主義者団体クー・クラックス・クラン(KKK)への加入歴もあるが、全米有色人種地位向上協会で演説を行い、公民権運動を支援した初めての大統領である。日本への原子爆弾投下について、投下書類(投下命令書)を承認したとされているが、トルーマンによる正式な承認は記録されていない。
⇧ 原爆投下にGOサイン出したと言われている人物らしいですね。KKKにも入っていたかと思えば、公民権運動を支援したりとか、結構やってることがめちゃくちゃ ですね。
はい、長々と脱線していまいましたが、 というわけで、今回は、Apache NiFi について、レッツトライ~。
Apache Nifi の構成
な、なんと!JVM(Java Virtual Machine:Java仮想マシン) で動作するものらしい。
NiFi executes within a JVM on a host operating system. The primary components of NiFi on the JVM are as follows:
ちなみに、クラスター 環境でもイケるらしい。
クラスターって、
クラスター(Cluster)は「房」「集団」「群れ」の意味。ネットワークに接続した複数のコンピューターを連携して1つのコンピューターシステムに統合し、処理や運用を効率化するシステムのこと。
コンピューター同士は、ディスク装置の情報を物理的・論理的に共有するが、メモリー上の情報は共有しない。
クラスターには大きく分けて以下の2種類のシステムがある。
(1)HA(High Availability)クラスターシステム アベイラビリティ(高可用性)を高めることを目的としたクラスター。複数のコンピューターのうちアプリケーション実行の「本番用」と「待機用」を使い分けられる。1台のコンピューターに障害が発生すると、「クラスタソフト」と呼ばれるミドルウェアが残りの正常なコンピューターに切り替えるため、障害から早期に復旧できる。
(2)負荷分散クラスター スケーラビリティ(拡張性)を高めることを目的としたクラスター。複数のコンピューターに処理を分散することで、1台当たりの処理の負荷を低くし、全体の処理能力を向上させる。 クラスターは、各ユーザーが独自開発して使用する場合と、企業がサービスとして提供する場合がある。
ことらしい。
Apache NiFi をインストールしてみる
公式サイトによりますと、
Downloading and Installing NiFi
NiFi can be downloaded from the NiFi Downloads Page. There are two packaging options available: a "tarball" that is tailored more to Linux and a zip file that is more applicable for Windows users. Mac OS X users may also use the tarball or can install via Homebrew.
To install via Homebrew, simply run the command brew install nifi
.
For users who are not running OS X or do not have Homebrew installed, after downloading the version of NiFi that you would like to use simply extract the archive to the location that you wish to run the application from.
For information on how to configure the instance of NiFi (for example, to configure security, data storage configuration, or the port that NiFi is running on), see the Admin Guide.
⇧ってな具合らしいので、とりあえず、ダウンロードページへ。
http://nifi.apache.org/download.html
ダウンロードページに行くと、
⇧ ダウンロードの選択肢としては、
- Sources
- Binaries
- Docker image
の3つがあるらしい。
で、今回は、Docker image で試してみたいと思うので、Docker を使える環境を用意しておく必要があります。
自分は、Windows 10 Homeを使っているため、Docker ToolBox を インストールしています。
公式のドキュメントの以下のページの「Supported platforms」で、
⇧ OS(Operaton System)ごとに、どれをインストールすれば良いか説明が載っています。
というわけで、ここからは、Docker環境が整っているという前提で。
まずは、Docker Hub で、Apache Nifi のDocker image をインストールしていきます。
https://hub.docker.com/r/apache/nifi/
⇧ 上記のページの説明にある通り、
docker pull apache/nifi
を実行すれば良いのですが、そのためには、Dockerデーモンが起動している必要があるので、docker コマンドを使える仮想マシンをまずは起動します。
Docker ToolBox をインストールしてる場合は、
docker-machine ls
で、Docker ToolBoxで作成された仮想マシンの一覧 が表示されます。
自分の場合は、Docker ToolBoxで作成された仮想マシンが、「default」「kusanagi-machine」という2つ存在することが分かりました。
今回は、「default」のほうを起動してみます。
docker-machine start default
指示された通りに、
docker-machine env [仮想マシン名]
を実行。
指示された通りに、
docker-machine regenerate-certs [name]
そしたらば、改めて
docker-machine env [仮想マシン名]
を実行。次のコマンドを実行するよう指示があるので、
@FOR /f "tokens=*" %i IN ('docker-machine env default') DO @%i
を実行で。
これで、仮想マシン内のDockerデーモンが起動したと思われるので、Apache NifiのDocker image をインストールする準備が整ったかと。
「docker info」「docker version」コマンドで、docker の情報が見れるようです。
というわけで、Apache Nifi の Docker image をインストールで。
docker pull apache/nifi
ちょいと時間がかかりますが、
インストールできました~。
イメージがインストールできたので、
このイメージを元にコンテナを作成して起動します。
docker run --name [任意のコンテナ名] -p [ホストのポート]:[ゲストのポート] -d [REPOSITORY:TAG]
そうすると、コンテナが起動してるのが確認できます。
docker ps
んで、ブラウザ上からアクセスできるらしいんですが、Docker ToolBox の場合は、仮想マシンのIP:[ホストのポート] じゃないとアクセスできないので要注意ですかね。
⇧ SSHポートフォワーディング を利用すれば、loclahost:[ホストのポート] とかでもアクセスできるようになるらしいっす。
公式のDocker の説明では、Linux 環境では、
という構成で、Windows 環境では、
っていう構成になるため、Docker クライアントが DOCKER_HOST 内に含まれるかどうかが変わってしまうため、Linux 環境であれば、localhost でアクセスできても、Windows 環境では、loclahost でアクセスできないってことになっているのかと。
ただし、Docker ToolBox ではなく、Docker for Windows の環境であれば、もしかしたら、localhost でアクセスできるかもです。(仮想化の方法が異なるので)
なので、Docker ToolBox を使っている場合は、
docker-machine ip
で、仮想マシンのIPアドレスを確認して、 ブラウザにアクセスします。
そうすると、
無事に表示されました~。
Docker コンテナで起動してるので、Docker コンテナが停止、または削除された場合は、アクセスできなくなります。
docker rm -f [コンテナ名]
⇧ コンテナを削除したので、アクセスできなくなったのが確認できました。
仮想マシンを停止で。
docker-machine stop [仮想マシン名]
というわけで、Apache Nifi をインストールするところまでできました~、最後にコンテナを削除してますが。
次回は、Apache Nifi を実際に操作していきたいですね。
今回はこのへんで。