The EDB Blog
May 10, 2016

EnterpriseDB® (EDB™)は、Hortonworksデータプラットフォーム用のEDB Postgres™Advanced Serverデータベースを認定しています。その認証は最終的に、Hadoopクラスタに格納されたデータとトランザクション情報を組み合わせる強力なソリューションを企業に提供します。この情報をシームレスに把握することで、強力化させる企業は業務や顧客主導型の収益計画の新しい効率性を見つけるために企業データをより深く分析することができます。(プレスリリースをお読みにならば ここで)

EDB developed a Foreign Data Wrapper (FDW) for the Hadoop Distributed File System (HDFS_FDW) that helped achieve this certification for the Hortonworks Data Platform (HDP). FDWs are a Postgres feature for connecting external data stores to Postgres and enable applications to query this data with SQL as if it were native Postgres data. The HDFS_FDW is an EDB Postgres Data Adapter that uses the capabilities enabled by FDW technology to ease integration of EDB Postgres with other solutions deployed throughout the data center.  

EDBはPostgres向けのEDB Postgres Data Adaptersの積極的な開発プログラムを用意しており、複数のソースからの情報を組み合わせることで、シームレスなデータセンター・ファブリックを作成し、データからより詳細な洞察を抽出することができます。データをより簡単に組み合わせることもできるため、複雑さとリスクが排除され、Postgresは単一の連合データ管理ソリューションとして位置づけられます。

HDPとYARNの簡単な起動

Hortonworksが説明したHDP:

「Hortonworks Data Platform(HDP)は、Apache Hadoopによって提供されるopen sourceのディストリビューションです。HDPは実際のApacheでリリースされたバージョンのコンポーネントを提供し、すべてのコンポーネントを実稼働環境で相互運用可能にするために必要なバグを修正します。これは、クラスタ全体に完全なApache Hadoopスタックを配備し、GangliaとNagiosを使用して必要な監視機能を提供する、使いやすいインストーラ(HDPインストーラ)とともにパッケージ化されています。

簡単に言えば、HDPはApache HDFSとHDFS(Hive、Hbase、MapReduceなど)とやり取りするコンポーネントのための統合されたプラットフォームとopen sourceディストリビューションを提供します。これらのコンポーネントを個別にインストールして一緒に動作させようとすると、HDPをインストールするか、これらのコンポーネントがすべてインストールされ、ユーザーフレンドリーなWebインターフェイスであるHortonworksからHDP Sandboxを入手することで、お使いのHDP clusterの管理、管理、および監視を可能にするAmbariです。

The HDP certification means the EDB Postgres Advanced Server database has been validated to work with HDP, the Hortonworks data platform, and, by default, is YARN-certified as well. 

YARN(Yet Another Resource Negotiator)は、一般的なリソース管理および分散アプリケーションフレームワークであり、手元のタスクに合わせてカスタマイズされた複数のデータ処理アプリケーションを調整して動作させることができます。

HortonworksはYARNを次のように説明しています:

「YARNは、Enterprise Hadoopの前提条件であり、Hadoop cluster間で一貫性のある操作、セキュリティ、およびデータガバナンスツールを提供するためのリソース管理と中央プラットフォームを提供します。

YARNはまた、Hadoopのパワーをデータセンター内にある最新技術や新技術にまで拡張し、コスト効率の高いlinear-scaleのストレージと処理を利用できるようにします。ISVと開発者に、Hadoopで動作するデータアクセスアプリケーションを作成するための一貫したフレームワークを提供します。

YARN-ready certification means that EDB’s HDFS_FDW is integrated with YARN, allowing OLTP and SQL workloads in general to participate in YARN solutions. 

HDFS_FDW–アーキテクチャとロードマップ

Hortonworksでソリューションを認証するには、パートナ–この場合はEDB–が、ソリューションがHDPとどのように統合されているかを説明する一連のアーキテクチャおよび設計ドキュメントを完成させる必要がありますまた、統合された方法でHDPで作業するパートナーソリューションのライブデモも含まれています。

このブログでは、この認証のためにEDBとHortonworksの技術についていくつかの洞察を提供し、ユーザーがビジネスニーズを満たすためにこのソリューションを展開して使用する方法について説明します。

FDW technology enables the EDB Postgres Advanced Server or open source PostgreSQL server to access and manipulate objects in a remote data store that ranges from SQL databases through to flat file storage. The HDFS_FDW is an open source extension provided by EDB for its EDB Postgres Advanced Server database and for community PostgreSQL. 

HDFS_FDW拡張はGithub からダウンロードできます現在、コードをダウンロードして、拡張モジュールとその依存ライブラリーを手動でビルドする必要があります(hdfs_fdw githubページの手順を使用)。EDBは、2016年中頃までにHDFS_FDWとそれに依存するライブラリーを自動的にインストールするGUIインストーラを発表する予定です。これにより、HDFS_FDWを現在のインストールよりも簡単にインストールできるようになります。

HDFS_FDWは、EDB Postgres とコミュニティPostgreSQLの拡張です。 SQLを使用してHDFSからデータを読み取り、OLTPおよび分析目的で使用することができます。HDFS_FDWは、HiveServerを使用してHDFS clusterからデータを取得して処理します(アーキテクチャーについてはこのブログで詳しく説明しています)。

HDFS_FDWは、HDFSに格納された大きなデータのためのSQLインタフェースを提供することにより、リレーショナルデータベースとHDP(HDFSに基づくビッグデータソリューション)のパワーを組み合わせたものです。ユーザーは、PostgresのリレーショナルSQL構文を使用して、単純なSQLクエリーから複雑な分析クエリーおよび集計クエリまで何でも実行できます。データはHiveServerを使用してHDFSから読み取られ、SQLの照会結果は必要な照会処理を適用した後、タイムリーにユーザーに戻されます。

  • 現在、HDFS_FDWは読み込み機能しか提供していませんが、EDBは次の追加機能を計画しています。
  • HDFS_FDWのGUIインストーラ
  • さまざまな認証方法のサポート(つまり、Kerberos, NOSASL,等.)
  • HDFA書き込みのサポート
  • HDFSとAdvanced Server / PostgreSQL間のバルクデータ転送
  • より多くのSQLクエリー句をリモートサーバにプッシュすることでパフォーマンスが向上しました(詳細はこのブログで説明しています)

HDFS_FDWのアーキテクチャに関しては、Hiveを使用してHDFS clusterからデータを接続して取得しています。Hiveserver1とHiveserver2の両方がサポートされています。HDFS_FDWは、SQLクエリーをHive(HIVEQL)のクエリー言語に変換し、HiveServerに送信します。HiveServerは、いくつかのケースでのMapReduceジョブを実行することを含む必要な処理を行い、データベース・サーバーにデータを返します。データベースサーバはその処理を行います。現在、HiveServerにプッシュダウンされていない集計の場合、必要な列はHiveServerを使用してHDFSから取得され、結果設定をユーザーに返す前に集約操作が実行されます。

HDFS_FDWは、現在、WHERE述語およびターゲット列リストをHiveServerにプッシュダウンします。集計、外部結合、ソートなどのその他すべての操作は、データベース・サーバーによって実行されます。PostgresのFDW機構は、ソート、結合、集約のためのプッシュダウンをサポートするように拡張されています。この機能がFDWインフラストラクチャの一部であると、HDFS_FDWを含むすべてのFDWがこのパフォーマンス向上機能を 提供できるようになります。プッシュダウン機能は、より多くの処理をリモートサーバーにプッシュすることでパフォーマンスが向上し、データベースサーバーへのデータ転送量が少なくて済みます。これにより、ネットワークトラフィックが減少し、クエリー実行時間が大幅に増加します。

下のアーキテクチャ図は、今日のビジネスニーズを満たすために、HDPとHDFS_FDWがどのようにアーキテクチャ全体に収まるかを示しています。ビッグデータはウェブログ 通信データ、医療記録などになり、HDPプラットフォームを使用してHDFSに保存されます。データは、 EDB Postgresが提供するHDFS_FDW拡張を介してSQLを使用するアプリケーションによってアクセスされます。下の図は 、HDP、HDFS_FDW、およびPostgresが連携して実際のビジネスニーズをどのように満たすかを示しています。

次に、実世界の使用例を使用してこの統合ソリューションを起動して実行する方法を説明します。

HDFS_FDWとHDPがBig Dataのビジネスニーズをどのように満たすことができるかを実証するために、ウェブログの実際の使用例を使用します。ウェブログはウェブサイトのトラフィック情報を指します。ビジー状態のウェブサイトで膨大なウェブログデータが生成される可能性があります。ウェブログが測定できるのは、 ビジー状態のウェブサイトではギガバイト単位とテラバイト単位になります。

しかしまず、HDFS_FDW拡張機能を備えたHortonworks HDPとEDB Postgresのインストールを実行する必要があります。HDPのインストールでは、仮想マシン(VM)にHortonworks Sandboxをダウンロードしてインストールするか、クラウドにHortonworks Sandboxのインスタンスをインスタンス化するのが最も簡単な方法です。

アプリケーション–AzureでHortonworks Sandboxのインスタンスを設定する方法

VMにHortonworks Sandboxをダウンロードしてインストールする手順や、クラウド上にHDPインスタンスを導入する手順は、次のリンクから入手できます。

http://hortonworks.com/products/hortonworks-sandbox/#install

http://hortonworks.com/hadoop-tutorial/deploying-hortonworks-sandbox-on-microsoft-azure/

このデモの目的は、AzureにHDP2.3をAzureにインスタンスを展開し、EDB PostgresとHDFS_FDWインストレーションを別のCentOS 6.7VMを作成する事です。

上記のリンクの指示に従った後、Azure上でHDPのインスタンスが実行される必要があります。次のスクリーン ショットは、このデモで使用するAzureで実行されているHDP2.3のインスタンスを示しています。DNS名"hdp4.cloudapp.net"にご注意ください。HDFS_FDW を使用して高度なサーバーからこのHDPインスタンスに接続するために、このDNS名を使用する事に成ります。このHDPインスタンスは完全なApacheのHDFSクラスターと関連するコンポーネントを使用する準備ができています。

Hortonworks Ambariインターフェース

お使いのHDP clusterを管理および監視するためのHortonworks Ambari Webインターフェイスは、次のURLからアクセスできます。: http://hdp4.cloudapp.net:8080/#/main/dashboard/metrics. 下のスクリーンショットは、前の手順でAzureに展開されたHDPインスタンスのAmbariのランディングページを示しています。HDFSや他のコンポーネントが稼動していることがわかります。

 

Ambariインターフェイスを使用したHDFSへのファイルのアップロード

HDPを稼働させたら、ウェブログファイルをHDFSにアップロードする必要があります。以前に共有されたリンクを使用して、EDB HDFS_FDW githubページからサンプルウェブログファイルを取得することができます。または、 https://github.com/EnterpriseDB/hdfs_fdw

ウェブログファイルは、Ambariインターフェイスを使用してHDFSにアップロードできます。手順は以下のとおりです:

  • URLを使用してAmbariインターフェスにログイン:  http://hdp4.cloudapp.net:8080/#/main/dashboard/metrics
  • 上記のスクリーンショットで表示しているドロップダウンメニューオプションで「HDFSファイル」をクリックして下さい。
  • Tmp directoryに移動します。
  • 「新しいディレクトリ」ボタンをクリックし"admin"と呼ばれる新しいディレクトリを追加し管理ディレクトリの中に行くをクリックします。それには何もファイルはありません。
  • 「新しいディレクトリ」ボタン横にある"アップロード"ボタンが表示されます。アップロードをクリックし、前の手順でダウンロードしたウェブログファイルをアップロードします
  • HDFSにファイルがアップロードされました

EDB Postgres Advanced ServerとHDFS_FDWをインストール中

次にEDBから EDB Postgres Advanced ServerとHDFS_FDWをインストールする必要があります。インストローラーをこのウェブサイトからダウンロードできます EnterpriseDB’s website: http://www.enterprisedb.com/downloads/postgres-postgresql-downloads

このデモではAzureでCentOS6.7VMを展開してAdvancedServer v9.4をインストールします。 (「Version(); の選択」を実行して、完全なバージョン文字列を取得ことができます edb psql (Advanced Server コマンド ライン インターフェイスに接続します。)

[ahsanhadi@hdfscentos67 ~]$ uname -a

Linux hdfscentos67 2.6.32-573.1.1.el6.x86_64#1 SMP Sat Jul 25 17:05:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

edb=# select version();

                                                     version                                                     

EnterpriseDB 9.4.1.3onx86_64-unknown-linux-gnu, compiled by gcc(GCC)4.1.220080704(Red Hat 4.1.2-55),64-bit

(1 row)

次に、次のEnterpriseDB githubの場所からHDFS_FDWをダウンロードしてビルドする必要があります。HDFS_FDWを構築するための詳細な手順は、このブログの付録Aを参照してください。CentOS6.7のための手順です。依存モジュールのいくつかを構築する手順は、他のオペレーティングシステムでは異なる場合があることに注意してください。

The steps of manually building HDFS_FDW (which can be complicated) will be eliminated once EDB releases the GUI installer for HDFS_FDW in mid-2016. 

Ambariインターフェイスを使用したハイブテーブルの作成

この時点で、HDFS_FDWの構築(付録Aの手順を使用)とEDB Postgresデータベースサーバの起動後に、EDB PostgresとHDFS_FDWを起動して実行する必要があります。HDFS_FDWの使用を開始し、前の手順でHDFSにアップロードしたウェブログデータに対してSQL操作を実行する準備が整いました。

edb-psqlからHDFS_FDWを使用する前に、HDFSにアップロードされたデータファイルにマップするテーブルを作成する必要があります。このハイブテーブルは、内部でHDFS_FDWによって使用され、HDFSからのデータを照会します。

ハイブテーブルは、前のスクリーンショットに示した「Ambariドロップダウンメニューからハイブをクリックする」ことで作成できます。これにより、ハイブデータベースエクスプローラが左側に、ワークシートペインが中央に表示されたハイブインターフェイスが開きます。このデモ用のデフォルトデータベースにウェブログのテーブルを作成します。データベースエクスプローラから既定のデータベースを選択し、ワークシートの次のコマンドをコピーし、実行を押します。

CREATE TABLE weblogs (

   client_ip              STRING,

   full_request_date      STRING,

   day                    STRING,

   month                  STRING,

   month_num              INT,

   year                   STRING,

   hour                   STRING,

   minute                 STRING,

   second                 STRING,

   timezone               STRING,

   http_verb              STRING,

   uri                    STRING,

   http_status_code       STRING,

   bytes_returned         STRING,

   referrer               STRING,

   user_agent             STRING)

row format delimited

fields terminated by '\t';

 

次のクエリーを実行して、テーブルが正常に作成されたかどうかを確認できます。

選択*ウェブログから制限1;

HDFS_FDW(セットアップと使い方)

EDB Postgresのコマンドラインアプリケーションはedb-psqlです。Advanced Serverのインストール時に与えられたユーザ名/パスワードを使用してedb-psqlにログインする必要があります。edb-psqlプロンプトで次のコマンドを実行する必要があります。

  • hdfs_fdw拡張をロード

CREATE EXTENSION hdfs_fdw;

  • Azureで作成されたHDPインスタンスを指す外部サーバーを作成します。hostname、port(hiveserver 2)およびclient_typeを参照してください)

CREATE SERVER hdfs_server

FOREIGN DATA WRAPPER hdfs_fdw

OPTIONS(host'hdp4.cloudapp.net',port'10000',client_type'hiveserver2');

  • 上記の手順で作成した外部サーバーのユーザーマッピングを作成します。

CREATE USER MAPPING FOR enterprisedb server hdfs_server;

  • 外部テーブルを作成します。この表は、上記のステップでAmbariインターフェイスを使用してハイブで作成されたテーブルを示しています。OPTIONS句に表示されるデータベース名は"default"で、テーブル名はweblogです。表の列は、ハイブで作成された表の列にマップされます。

 

CREATE FOREIGN TABLE weblogs

(

 client_ip         TEXT,

 full_request_date TEXT,

 day               TEXT,

 Month             TEXT,

 month_num         INTEGER,

 year              TEXT,

 hour              TEXT,

 minute            TEXT,

 second            TEXT,

 timezone          TEXT,

 http_verb         TEXT,

 uri               TEXT,

 http_status_code  TEXT,

 bytes_returned    TEXT,

 referrer          TEXT,

 user_agent        TEXT

)

SERVER hdfs_server

OPTIONS (dbname 'default', table_name 'weblogs');

  • これで、HDFS_FDW外部表を使用し、単純で複雑なSQL問合せを実行する準備が整いました。いくつかの例は以下にあります:

 

edb=# select * from weblogs limit 1;

  client_ip   |     full_request_date      | day | month | month_num | year | hour | minute | second | timezone | http_verb |        uri        | http_status_code | bytes_returned |     referrer      |                                                    user_agent                                                   

---------------+----------------------------+-----+-------+-----------+------+------+--------+--------+----------+-----------+-------------------+------------------+----------------+-------------------+------------------------------------------------------------------------------------------------------------------

612.57.72.653 | 03/Jun/2012:09:12:23 -0500 | 03  | Jun   |         6 | 2012 | 09   | 12     | 23     | -0500    | GET       | /product/product2 | 200              | 0              | /product/product2 | Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)

(1 row)

—————-

select client_ip, (year || ' ' || month || ' '|| day || ' ' || hour || ':' || minute || ':' || second) datetime from weblogs order by datetime desc limit 20;

  client_ip    |       datetime      

-----------------+----------------------

55.50.35.364    | 2012 Sep 30 04:45:30

43.60.688.623   | 2012 Sep 30 04:45:00

658.338.616.336 | 2012 Sep 30 04:43:32

658.338.616.336 | 2012 Sep 30 04:43:30

11.308.46.48    | 2012 Sep 30 04:41:00

361.631.17.30   | 2012 Sep 30 04:40:31

361.631.17.30   | 2012 Sep 30 04:40:30

361.631.17.30   | 2012 Sep 30 04:40:30

325.87.75.36    | 2012 Sep 30 04:28:31

325.87.75.36    | 2012 Sep 30 04:28:30

324.01.320.658  | 2012 Sep 30 04:24:00

325.87.75.336   | 2012 Sep 30 04:13:30

325.87.75.336   | 2012 Sep 30 04:13:30

324.677.46.306  | 2012 Sep 30 04:09:26

324.677.46.306  | 2012 Sep 30 04:09:01

324.677.46.306  | 2012 Sep 30 04:09:01

324.677.46.306  | 2012 Sep 30 04:09:01

324.677.46.306  | 2012 Sep 30 04:09:00

324.01.67.83    | 2012 Sep 30 04:08:30

46.372.322.323  | 2012 Sep 30 04:05:30

(20 rows)

      

hdfs_fdwテーブルにハイブテーブルを結合する

 

edb=# CREATE TABLE premium_ip

edb-# (

edb(#       client_ip TEXT, category TEXT

edb(# );

CREATE TABLE

edb=#

edb=# INSERT INTO premium_ip VALUES ('683.615.622.618','Category A');

INSERT 0 1

edb=# INSERT INTO premium_ip VALUES ('14.323.74.653','Category A');

INSERT 0 1

edb=# INSERT INTO premium_ip VALUES ('13.53.52.13','Category A');

INSERT 0 1

edb=# INSERT INTO premium_ip VALUES ('361.631.17.30','Category A');

INSERT 0 1

edb=# INSERT INTO premium_ip VALUES ('361.631.17.30','Category A');

INSERT 0 1

edb=# INSERT INTO premium_ip VALUES ('325.87.75.336','Category B');

INSERT 0 1

edb=#

 

edb=#  SELECT hd.client_ip IP, pr.category, count(hd.client_ip)

edb-#                            FROM weblogs hd, premium_ip pr

edb-#                            WHERE hd.client_ip = pr.client_ip

edb-#                            AND hd.year = '2011'                                                

edb-#                            GROUP BY hd.client_ip,pr.category;

      ip        |  category  | count

-----------------+------------+-------

14.323.74.653   | Category A |  3153

361.631.17.30   | Category A | 25462

683.615.622.618 | Category A |  3821

13.53.52.13     | Category A |  1096

325.87.75.336   | Category B |  1272

(5 rows)

 

付録A-HDFS_FDWとその依存コンポーネントを構築する方法

STOP. Before doing anything, please replace the paths in the instructions below according to your environment. These instructions are for CentOS 6.7; building the dependent libraries on other operating systems might be different. Also please check the library version on your machine and only install if your current version if less than the one required for the HDFS_FDW. 

1.HDPを実行しているマシンをtelnetで接続できることを確認します。ハイブサーバー2を実行しているポートにTelnet接続します。

telnet hdp4.cloudapp.net10000

2. hiveserver2がNOSASL認証で実行されていることを確認します。Ambariインターフェイスを使用してハイブサーバーコンフィグレーションを確認できます。

3.倹約パッケージを入手して、HDFS_FDWは倹約ライブラリー

wget http://apache.osuosl.org/thrift/0.9.2/thrift-0.9.2.tar.gz

4.倹約インストールに必要ないくつかのモジュールをインストールします...

4a.sudo-syum install gcc*

4b. yum remove bison

このステップの前にバイソンのバージョンを確認し、バージョンが3.0未満の場合は、次の手順を実行してください。

4cインストールバイソン3.0

wget http://ftp.gnu.org/gnu/bison/bison-3.0.tar.gz

tar-zxvf bison-3.0.tar.gz

cd bison-3.0

./configure

sudoをインストール

上記の手順でインストールしたバイソンがパスの早い方に来ていることを確認してください。

4d. sudo yum install libevent-devel

4e.ブースト1.5.4をインストール

*Boost_1_54_0.tar.gzをダウンロード

*Untar

*bootstrap.shを実行する

*exec./b2

4f. ブーストを含むディレクトリのCPPFLAGSをエクスポートします(ディレクトリは上記の手順で作成されました)

CPPFLAGSをエクスポート='-I/home/ahsanhadi/boost'

5. 倹約パッケージを解凍する

5a. 以下のコンフィギュアコマンドを使用してthriftを設定します。当社は、C++ドライバだけが必要なので、残りのドライバを構築するのは興味がありません。

./configure--prefix=/usr/local/thrif--without-csharp--without-java--without-erlang--without-python--without-perl--without-php--without-ruby--without-haskell--without-go--with-lua=no --with-boost=/home/ahsanhadi/boost_1_54_0

お使いのマシンに合わせてプレフィックスとブーストパスを変更してください。

構成を実行するときに、必要なライブラリを探す際にエラーがないことを確認してください。エラーが表示された場合は解決する必要があります。

設定が終わったら、C ++ドライバはyes、restはnoにする必要があります。

6.fb303をビルドします。

*cdthrift-0.9.2/contrib/fb303

*./configure--prefix=/usr/local/thrift --with-thriftpath=/usr/local/thrift

*make&&インストールさせる

7.libhiveをビルドする必要があります。

* makeファイルを編集し、それに応じて以下のパスを変更してください...

THRIFT_HOME=/usr/local/thrift/include

INSTALL_DIR=/opt/PostgresPlus/9.4AS/lib

*make&&インストールさせる

8.hdfs_fdwをビルドする準備ができました。

git clone https://github.com/EnterpriseDB/hdfs_fdw.git

export PATH=/opt/PostgresPlus/9.4AS/bin/:$PATH

export LD_LIBRARY_PATH=/usr/local/thrift/lib/:$LD_LIBRARY_PATH

USE_PGXSを作る=1

sudoがUSE_PGXSを作る=1のインストール

9.HDFS_FDWががビルドされ展開されます。次に、githubページの指示に従って、拡張機能、外部サーバーおよび外部表を作成する必要があります。

アーサン・ハンディは EnterpriseDB の製品開発担当の専務理事です。