Clientes do Phoenix - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Clientes do Phoenix

Você se conecta ao Phoenix usando um JDBC cliente criado com dependências completas ou usando o “thin client” que usa o Phoenix Query Server e só pode ser executado em um nó principal de um cluster (por exemplo, usando um SQL cliente, uma etapa, linha de comando, encaminhamento de SSH porta etc.). Ao usar o JDBC cliente “fat”, ele ainda precisa ter acesso a todos os nós do cluster porque se conecta diretamente aos HBase serviços. O cliente "magro" do Phoenix precisa apenas do acesso ao Phoenix Query Server em uma porta padrão 8765. Há vários scripts no Phoenix que usam esses clientes.

Use uma EMR etapa da Amazon para consultar usando o Phoenix

O procedimento a seguir restaura um instantâneo HBase e usa esses dados para executar uma consulta Phoenix. Você pode estender este exemplo ou criar um novo script que utiliza os clientes do Phoenix para atender às suas necessidades.

  1. Crie um cluster com o Phoenix instalado usando o seguinte comando:

    aws emr create-cluster --name "Cluster with Phoenix" --log-uri s3://amzn-s3-demo-bucket/myLogFolder --release-label emr-7.5.0 \ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles
  2. Crie e, em seguida, carregue os seguintes arquivos para o 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://amzn-s3-demo-bucket/phoenixQuery.sql /home/hadoop/ /usr/lib/phoenix/bin/sqlline-thin.py http://localhost:8765 /home/hadoop/phoenixQuery.sql

    phoenixQuery.sql

    nota

    Você só precisa incluir COLUMN_ENCODED_BYTES=0 no exemplo a seguir ao usar as EMR versões 5.26.0 e superiores da Amazon.

    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";

    Use o AWS CLI para enviar os arquivos para o bucket do S3:

    aws s3 cp copySnapshot.sh s3://amzn-s3-demo-bucket/ aws s3 cp runQuery.sh s3://amzn-s3-demo-bucket/ aws s3 cp phoenixQuery.sql s3://amzn-s3-demo-bucket/
  3. Crie uma tabela usando as seguintes etapas enviadas para o cluster que você criou na Etapa 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. Use o script-runner.jar para executar o script copySnapshot.sh que foi anteriormente carregado para o bucket do S3:

    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://amzn-s3-demo-bucket/copySnapshot.sh"]

    Isso executa um MapReduce trabalho para copiar seus dados de snapshot para o clusterHDFS.

  5. Restaure o snapshot que você copiou para o cluster usando a seguinte etapa:

    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. Use o script-runner.jar para executar o script runQuery.sh que foi anteriormente carregado para o bucket do S3:

    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://amzn-s3-demo-bucket/runQuery.sh"]

    A consulta é executada e obtém os resultados do stdout da etapa. Pode levar alguns minutos para a etapa ser concluída.

  7. Inspecione os resultados das etapas stdout no registro URI que você usou ao criar o cluster na Etapa 1. Os resultados devem ser algo semelhante a:

    +------------------------------------------+-----------------------------------+ | 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 | +------------------------------------------+-----------------------------------+