Klien Phoenix - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Klien Phoenix

Anda terhubung ke Phoenix menggunakan JDBC klien yang dibangun dengan dependensi penuh atau menggunakan “thin client” yang menggunakan Phoenix Query Server dan hanya dapat dijalankan pada node master cluster (misalnya dengan menggunakan SQL klien, langkah, baris perintah, penerusan SSH port, dll.). Saat menggunakan JDBC klien “gemuk”, masih perlu memiliki akses ke semua node cluster karena terhubung ke HBase layanan secara langsung. Klien Phoenix “tipis” hanya membutuhkan akses ke Phoenix Query Server di port default 8765. Ada beberapa skrip dalam Phoenix yang menggunakan klien ini.

Gunakan EMR langkah Amazon untuk melakukan kueri menggunakan Phoenix

Prosedur berikut mengembalikan snapshot dari HBase dan menggunakan data tersebut untuk menjalankan kueri Phoenix. Anda dapat memperpanjang contoh ini atau membuat script baru yang memanfaatkan klien Phoenix sesuai dengan kebutuhan Anda.

  1. Buat cluster dengan Phoenix diinstal, menggunakan perintah berikut:

    aws emr create-cluster --name "Cluster with Phoenix" --log-uri s3://myBucket/myLogFolder --release-label emr-7.2.0 \ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles
  2. Buat kemudian upload file berikut ke Amazon S3:

    copySnapshot.sh

    sudo su hbase -s /bin/sh -c 'hbase snapshot export \ -D hbase.rootdir=s3://us-east-1.elasticmapreduce.samples/hbase-demo-customer-data/snapshot/ \ -snapshot customer_snapshot1 \ -copy-to hdfs://masterDNSName:8020/user/hbase \ -mappers 2 -chuser hbase -chmod 700'

    runQuery.sh

    aws s3 cp s3://myBucket/phoenixQuery.sql /home/hadoop/ /usr/lib/phoenix/bin/sqlline-thin.py http://localhost:8765 /home/hadoop/phoenixQuery.sql

    phoenixQuery.sql

    catatan

    Anda hanya perlu memasukkan COLUMN_ENCODED_BYTES=0 dalam contoh berikut ketika Anda menggunakan Amazon EMR versi 5.26.0 dan yang lebih tinggi.

    CREATE VIEW "customer" ( pk VARCHAR PRIMARY KEY, "address"."state" VARCHAR, "address"."street" VARCHAR, "address"."city" VARCHAR, "address"."zip" VARCHAR, "cc"."number" VARCHAR, "cc"."expire" VARCHAR, "cc"."type" VARCHAR, "contact"."phone" VARCHAR) COLUMN_ENCODED_BYTES=0; CREATE INDEX my_index ON "customer" ("customer"."state") INCLUDE("PK", "customer"."city", "customer"."expire", "customer"."type"); SELECT "customer"."type" AS credit_card_type, count(*) AS num_customers FROM "customer" WHERE "customer"."state" = 'CA' GROUP BY "customer"."type";

    Gunakan AWS CLI untuk mengirimkan file ke bucket S3:

    aws s3 cp copySnapshot.sh s3://myBucket/ aws s3 cp runQuery.sh s3://myBucket/ aws s3 cp phoenixQuery.sql s3://myBucket/
  3. Membuat tabel menggunakan langkah berikut diserahkan ke cluster yang Anda buat di langkah 1:

    createTable.json

    [ { "Name": "Create HBase Table", "Args": ["bash", "-c", "echo $'create \"customer\",\"address\",\"cc\",\"contact\"' | hbase shell"], "Jar": "command-runner.jar", "ActionOnFailure": "CONTINUE", "Type": "CUSTOM_JAR" } ]
    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps file://./createTable.json
  4. Gunakan script-runner.jar untuk menjalankan skrip copySnapshot.sh yang sebelumnya diunggah ke bucket S3 Anda:

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="HBase Copy Snapshot",ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://myBucket/copySnapshot.sh"]

    Ini menjalankan MapReduce tugas untuk menyalin data snapshot Anda ke clusterHDFS.

  5. Memulihkan snapshot yang Anda disalin ke cluster menggunakan langkah berikut:

    restoreSnapshot.json

    [ { "Name": "restore", "Args": ["bash", "-c", "echo $'disable \"customer\"; restore_snapshot \"customer_snapshot1\"; enable \"customer\"' | hbase shell"], "Jar": "command-runner.jar", "ActionOnFailure": "CONTINUE", "Type": "CUSTOM_JAR" } ]
    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps file://./restoreSnapshot.json
  6. Gunakan script-runner.jar untuk menjalankan skrip runQuery.sh yang sebelumnya diunggah ke bucket S3 Anda:

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Phoenix Run Query",ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://myBucket/runQuery.sh"]

    Query berjalan dan mengembalikan hasil ke langkah stdout. Perlu waktu beberapa menit sampai langkah ini selesai.

  7. Periksa hasil langkah stdout di log URI yang Anda gunakan saat membuat cluster di Langkah 1. Hasilnya akan terlihat seperti berikut ini:

    +------------------------------------------+-----------------------------------+ | CREDIT_CARD_TYPE | NUM_CUSTOMERS | +------------------------------------------+-----------------------------------+ | american_express | 5728 | | dankort | 5782 | | diners_club | 5795 | | discover | 5715 | | forbrugsforeningen | 5691 | | jcb | 5762 | | laser | 5769 | | maestro | 5816 | | mastercard | 5697 | | solo | 5586 | | switch | 5781 | | visa | 5659 | +------------------------------------------+-----------------------------------+