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 baik klien JDBC dibangun dengan dependensi penuh atau menggunakan “thin client” yang menggunakan Phoenix Query Server dan hanya dapat dijalankan pada node master cluster (misalnya dengan menggunakan klien SQL, langkah, baris perintah, SSH port forwarding, dll). Bila menggunakan “lemak” JDBC klien, masih perlu memiliki akses ke semua node cluster karena menghubungkan ke layanan HBase 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 langkah Amazon EMR untuk query menggunakan Phoenix

Prosedur berikut mengembalikan snapshot dari HBase dan menggunakan data tersebut untuk menjalankan query 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-5.36.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 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 berkas 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 pekerjaan untuk menyalin data snapshot Anda ke cluster HDFS.

  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 stdout di log URI yang Anda gunakan ketika Anda 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 | +------------------------------------------+-----------------------------------+