このブログはHortonworks Advent Calendar 2016の1日目のエントリーです。
Hortonworksの展示ブースなどで見かけたかもしれませんが、TwitterからのデータをNiFiで収集し、Apache Solr + Bananaで可視化するデモの作成方法について解説します。環境としては、VMware、Virtual Boxなどでも作れますが、今回はMicrosoft Azure上に作りたいと思います。
実は、このネタは英語のチュートリアルのAnalyzing Social Media and Customer Sentiment With Apache NiFi and HDP Searchが元ネタです。
Azure上で、Hortonworks Data Platform (HDP)をデプロイ
Hadoop、Sparkを、Azure上のHortonworks Data Platformで試してみようを参照ください。
Hortonworks DataFlow (HDF)の設定
- ローカルのPCに、こちらより、NiFi onlyのDownload tar.gzをクリックし、HDF-2.x.x.x-xxx.tar.gzダウンロード
- Azure上に展開したSandboxにダウンロードしておいたHDFをアップロード
kkitase$ scp ~/Downloads/HDF-2.0.0.0-579.tar.gz kkitase@ip-address:/home/kkitase
- Azure上に展開したSandboxにログインして、設定を行う
kkitase$ ssh <username>@<ip address>
[kkitase@sandbox ~]$ sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
[kkitase@sandbox ~]$ mkdir hdf
[kkitase@sandbox ~]$ mv HDF-2.0.0.0-579.tar.gz hdf
[kkitase@sandbox ~]$ cd hdf
[kkitase@sandbox hdf]$ tar -xvf HDF-2.0.0.0-579.tar.gz
[kkitase@sandbox hdf]$ vi HDF-2.0.0.0/nifi/conf/nifi.properties
nifi.web.http.port=8080
↓変更
nifi.web.http.port=9090
[kkitase@sandbox hdf]$ ./HDF-2.0.0.0/nifi/bin/nifi.sh start
- http://ip-address:9090/nifi にアクセスするとNiFiのUIが表示される
Solrの設定
[kkitase@sandbox ~]$ sudo chown -R solr:solr /opt/lucidworks-hdpsearch/solr
[kkitase@sandbox ~]$ sudo su solr
[solr@sandbox kkitase]$ cp -r /opt/lucidworks-hdpsearch/solr/server/solr/configsets/data_driven_schema_configs /opt/lucidworks-hdpsearch/solr/server/solr/configsets/tweet_configs
[solr@sandbox kkitase]$ vi /opt/lucidworks-hdpsearch/solr/server/solr/configsets/tweet_configs/conf/solrconfig.xml
<processor class="solr.ParseLongFieldUpdateProcessorFactory"/>
<processor class="solr.ParseDateFieldUpdateProcessorFactory">
<arr name="format">
<str>EEE MMM d HH:mm:ss Z yyyy</str> ★この行を追加
<str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>
<str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str>
<str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>
<str>yyyy-MM-dd'T'HH:mm:ss,SSS</str>
<str>yyyy-MM-dd'T'HH:mm:ssZ</str>
</arr>
</processor>
</processor>
[solr@sandbox kkitase]$ cd /opt/lucidworks-hdpsearch/solr/server/solr-webapp/webapp/banana/app/dashboards/
[solr@sandbox dashboards]$ mv default.json default.json.orig
[solr@sandbox dashboards]$ wget https://raw.githubusercontent.com/abajwa-hw/ambari-nifi-service/master/demofiles/default.json
[solr@sandbox dashboards]$ export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64
[solr@sandbox dashboards]$ /opt/lucidworks-hdpsearch/solr/bin/solr start -c -z localhost:2181
[solr@sandbox dashboards]$ /opt/lucidworks-hdpsearch/solr/bin/solr create -c tweets -d tweet_configs -s 1 -rf 1
[solr@sandbox dashboards]$ exit
[kkitase@sandbox ~]$ sudo su -
[root@sandbox ~]# yum install -y ntp
[root@sandbox ~]# service ntpd stop
[root@sandbox ~]# ntpdate pool.ntp.org
[root@sandbox ~]# service ntpd start
- http://ip-address:8983/solr/ にアクセスするとSolrのUIが表示される
Twitter Appsを作成する
- https://apps.twitter.com/ にアクセス
- Create New Appをクリックし、下記のように作成する
- Permissionsタブで下記のように設定し、Update Settingsをクリック
- Keys and Access Tokensで下記の値をコピーしておく
- Consumer Key (API Key)
- Consumer Secret (API Secret)
- Access Token
- Access Token Secet
NiFiでフローを設定
-
デモ用のテンプレートをこちらからダウンロード
-
赤枠で囲ったボタンをクリックし、先ほどダウンロードしたテンプレートをインポート
- 赤枠で囲ったボタンをキャンパスにドラッグアンドドロップ
- Twitter Flowを選択
- Twitter Flowが表示されるので、Grab Garden Hoseと書かれた箱(NiFiではプロセッサーと呼ぶ)を右クリックし、Configureをクリック
- Propertiesタブで、先ほどメモしたConsumer Key, Consumer Secret, Access Token, Access Token Secretを設定し、Terms to Filter Onに、Twitterでモニターするキーワードを設定
Solrの可視化ツールBananaで確認
- http://ip-address:8983/solr/banana/index.html#/dashboard にアクセスし、正しく設定したキーワードが可視化されているか確認
以上、NiFiでTwitterからデータを収集し、そのデータフローをコントロールし、Solrにデータを格納し、Bananaで可視化するといったデモ作成手順について説明しました。英語のチュートリアルには続きがあるので、次回また、整理して日本語にしてみたいと思います。