Help us understand the problem. What is going on with this article?

TwitterからNiFiでデータを収集し、データフローをコントロールし、Solr + Bananaで可視化させてみよう

More than 1 year has passed since last update.

このブログは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

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

Twitter Appsを作成する

  • https://apps.twitter.com/ にアクセス
  • Create New Appをクリックし、下記のように作成する
     2016-12-02 0.13.22.png

  • Permissionsタブで下記のように設定し、Update Settingsをクリック
     2016-12-02 0.14.03.png

  • Keys and Access Tokensで下記の値をコピーしておく

    • Consumer Key (API Key)
    • Consumer Secret (API Secret)
    • Access Token
    • Access Token Secet

NiFiでフローを設定

  • デモ用のテンプレートをこちらからダウンロード

  • 赤枠で囲ったボタンをクリックし、先ほどダウンロードしたテンプレートをインポート
     2016-12-01 23.49.39.png

  • 赤枠で囲ったボタンをキャンパスにドラッグアンドドロップ
     2016-12-01 23.50.08.png

  • Twitter Flowを選択
     2016-12-01 23.50.12.png

  • Twitter Flowが表示されるので、Grab Garden Hoseと書かれた箱(NiFiではプロセッサーと呼ぶ)を右クリックし、Configureをクリック
     2016-12-01 23.50.46.png

  • Propertiesタブで、先ほどメモしたConsumer Key, Consumer Secret, Access Token, Access Token Secretを設定し、Terms to Filter Onに、Twitterでモニターするキーワードを設定
     2016-12-01 23.55.12.png

Solrの可視化ツールBananaで確認


以上、NiFiでTwitterからデータを収集し、そのデータフローをコントロールし、Solrにデータを格納し、Bananaで可視化するといったデモ作成手順について説明しました。英語のチュートリアルには続きがあるので、次回また、整理して日本語にしてみたいと思います。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away