O Hortonworks Data Platform (HDP) é uma plataforma de big data lançada pela Hortonworks, composta por componentes open source como Hadoop, Hive e HBase. O Hadoop 3.1.1 está incluído no HDP 3.0.1 e oferece suporte ao Object Storage Service (OSS). No entanto, versões anteriores do HDP não suportam o OSS. Este tópico usa o HDP 2.6.1.0 como exemplo para descrever como configurar o HDP 2.6 para leitura e gravação de dados no OSS.
Pré-requisitos
Um cluster HDP 2.6.1.0 criado.
Se você não tiver um cluster HDP 2.6.1.0, use um dos métodos a seguir para criá-lo:
Use o Ambari para criar um cluster HDP 2.6.1.0.
Se o Ambari não estiver disponível, crie manualmente um cluster HDP 2.6.1.0.
Procedimento
-
Baixe o pacote do HDP 2.6.1.0 com suporte ao OSS.
-
Execute o comando a seguir para descompactar o pacote baixado:
sudo tar -xvf hadoop-oss-hdp-2.6.1.0-129.tarExemplo de resposta de sucesso:
hadoop-oss-hdp-2.6.1.0-129/ hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-ram-3.0.0.jar hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-core-3.4.0.jar hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-ecs-4.2.0.jar hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-sts-3.0.0.jar hadoop-oss-hdp-2.6.1.0-129/jdom-1.1.jar hadoop-oss-hdp-2.6.1.0-129/aliyun-sdk-oss-3.4.1.jar hadoop-oss-hdp-2.6.1.0-129/hadoop-aliyun-2.7.3.2.6.1.0-129.jar -
Modifique os diretórios dos pacotes JAR.
NotaNeste tópico, todo o conteúdo delimitado por
${}
representa variáveis de ambiente. Ajuste essas variáveis conforme o seu ambiente real.
-
Mova o pacote Hadoop-aliyun-2.7.3.2.6.1.0-129.jar para o diretório ${/usr/hdp/current}/hadoop-client/. Execute o comando a seguir para verificar se o arquivo foi movido corretamente:
sudo ls -lh /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jarExemplo de resposta de sucesso:
-rw-r--r-- 1 root root 64K Oct 28 20:56 /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jar -
Mova os demais pacotes jar para o diretório ${/usr/hdp/current}/hadoop-client/lib/. Execute o comando a seguir para confirmar a alteração:
sudo ls -ltrh /usr/hdp/current/hadoop-client/libExemplo de resposta de sucesso:
total 27M ...... drwxr-xr-x 2 root root 4.0K Oct 28 20:10 ranger-hdfs-plugin-impl drwxr-xr-x 2 root root 4.0K Oct 28 20:10 ranger-yarn-plugin-impl drwxr-xr-x 2 root root 4.0K Oct 28 20:10 native -rw-r--r-- 1 root root 114K Oct 28 20:56 aliyun-java-sdk-core-3.4.0.jar -rw-r--r-- 1 root root 513K Oct 28 20:56 aliyun-sdk-oss-3.4.1.jar -rw-r--r-- 1 root root 13K Oct 28 20:56 aliyun-java-sdk-sts-3.0.0.jar -rw-r--r-- 1 root root 211K Oct 28 20:56 aliyun-java-sdk-ram-3.0.0.jar -rw-r--r-- 1 root root 770K Oct 28 20:56 aliyun-java-sdk-ecs-4.2.0.jar -rw-r--r-- 1 root root 150K Oct 28 20:56 jdom-1.1.jar
-
Repita as operações anteriores em todos os nós do HDP.
-
Adicione as configurações necessárias usando o Ambari. Se o cluster não for gerenciado pelo Ambari, modifique o arquivo core-site.xml. Na seção Custom core-site, adicione e configure as seguintes propriedades:
fs.oss.endpoint,fs.oss.accessKeyId,fs.oss.accessKeySecret,fs.oss.impl,fs.oss.buffer.dir,fs.oss.connection.secure.enabledefs.oss.connection.maximum.Parâmetro
Descrição
fs.oss.endpoint
Especifique o endpoint da região onde está localizado o bucket que você deseja acessar.
Exemplo: oss-cn-zhangjiakou-internal.aliyuncs.com.
fs.oss.accessKeyId
Insira o AccessKey ID usado para acessar o OSS.
fs.oss.accessKeySecret
Insira o AccessKey Secret usado para acessar o OSS.
fs.oss.impl
Defina a classe usada para implementar o sistema de arquivos do OSS com base no Hadoop. Configure o valor como org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem.
fs.oss.buffer.dir
Especifique o nome do diretório para armazenar arquivos temporários.
Recomendamos definir este parâmetro como /tmp/oss.
fs.oss.connection.secure.enabled
Especifique se o HTTPS deve ser ativado. A ativação do HTTPS pode afetar o desempenho.
Recomendamos definir este parâmetro como false.
fs.oss.connection.maximum
Especifique o número máximo de conexões com o OSS.
Recomendamos definir este parâmetro como 2048.
Para obter mais informações sobre outros parâmetros, consulte o módulo Hadoop-Aliyun.
Reinicie o cluster conforme solicitado pelo Ambari.
-
Teste a leitura e gravação de dados no OSS.
-
Execute o comando a seguir para testar a leitura de dados do OSS:
sudo hadoop fs -ls oss://${your-bucket-name}/ -
Execute o comando a seguir para testar a gravação de dados no OSS:
sudo hadoop fs -mkdir oss://${your-bucket-name}/hadoop-testSe for possível ler e gravar dados no OSS, as configurações foram aplicadas com sucesso. Caso contrário, verifique se as configurações estão corretas.
-
-
Para executar jobs MapReduce, execute o comando a seguir para mover o pacote do HDP 2.6.1.0 para o caminho hdfs://hdp-master:8020/hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gz:
NotaEste exemplo usa jobs MapReduce. Para saber como executar jobs de outros tipos, consulte a etapa e o código a seguir. Por exemplo, para executar jobs TEZ, mova o pacote do HDP 2.6.1.0 para o caminho
hdfs://hdp-master:8020/hdp/apps/2.6.1.0-129/tez/tez.tar.gz
.
sudo su - hdfs cd ~ hadoop fs -copyToLocal /hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gz hadoop fs -rm /hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gz cp mapreduce.tar.gz mapreduce.tar.gz.bak tar zxf mapreduce.tar.gz cp /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jar hadoop/share/hadoop/tools/lib/ cp /usr/hdp/current/hadoop-client/lib/aliyun-* hadoop/share/hadoop/tools/lib/ cp /usr/hdp/current/hadoop-client/lib/jdom-1.1.jar hadoop/share/hadoop/tools/lib/ tar zcf mapreduce.tar.gz hadoop hadoop fs -copyFromLocal mapreduce.tar.gz /hdp/apps/2.6.1.0-129/mapreduce/
Verificar as configurações
Teste o TeraGen e o TeraSort para validar se as configurações entraram em vigor.
-
Execute o comando a seguir para testar o TeraGen:
sudo hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=100 10995116 oss://{bucket-name}/1G-inputExemplo de resposta de sucesso:
18/10/28 21:32:38 INFO client.RMProxy: Connecting to ResourceManager at cdh-master/192.168.0.161:8050 18/10/28 21:32:38 INFO client.AHSProxy: Connecting to Application History server at cdh-master/192.168.0.161:10200 18/10/28 21:32:38 INFO aliyun.oss: [Server]Unable to execute HTTP request: Not Found [ErrorCode]: NoSuchKey [RequestId]: 5BD5BA7641FCE369BC1D052C [HostId]: null 18/10/28 21:32:38 INFO aliyun.oss: [Server]Unable to execute HTTP request: Not Found [ErrorCode]: NoSuchKey [RequestId]: 5BD5BA7641FCE369BC1D052F [HostId]: null 18/10/28 21:32:39 INFO terasort.TeraSort: Generating 10995116 using 100 18/10/28 21:32:39 INFO mapreduce.JobSubmitter: number of splits:100 18/10/28 21:32:39 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1540728986531_0005 18/10/28 21:32:39 INFO impl.YarnClientImpl: Submitted application application_1540728986531_0005 18/10/28 21:32:39 INFO mapreduce.Job: The url to track the job: http://cdh-master:8088/proxy/application_1540728986531_0005/ 18/10/28 21:32:39 INFO mapreduce.Job: Running job: job_1540728986531_0005 18/10/28 21:32:49 INFO mapreduce.Job: Job job_1540728986531_0005 running in uber mode : false 18/10/28 21:32:49 INFO mapreduce.Job: map 0% reduce 0% 18/10/28 21:32:55 INFO mapreduce.Job: map 1% reduce 0% 18/10/28 21:32:57 INFO mapreduce.Job: map 2% reduce 0% 18/10/28 21:32:58 INFO mapreduce.Job: map 4% reduce 0% ... 18/10/28 21:34:40 INFO mapreduce.Job: map 99% reduce 0% 18/10/28 21:34:42 INFO mapreduce.Job: map 100% reduce 0% 18/10/28 21:35:15 INFO mapreduce.Job: Job job_1540728986531_0005 completed successfully 18/10/28 21:35:15 INFO mapreduce.Job: Counters: 36 ... -
Execute o comando a seguir para testar o TeraSort:
sudo hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapred.map.tasks=100 oss://{bucket-name}/1G-input oss://{bucket-name}/1G-outputExemplo de resposta de sucesso:
18/10/28 21:39:00 INFO terasort.TeraSort: starting ... 18/10/28 21:39:02 INFO mapreduce.JobSubmitter: number of splits:100 18/10/28 21:39:02 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1540728986531_0006 18/10/28 21:39:02 INFO impl.YarnClientImpl: Submitted application application_1540728986531_0006 18/10/28 21:39:02 INFO mapreduce.Job: The url to track the job: http://cdh-master:8088/proxy/application_1540728986531_0006/ 18/10/28 21:39:02 INFO mapreduce.Job: Running job: job_1540728986531_0006 18/10/28 21:39:09 INFO mapreduce.Job: Job job_1540728986531_0006 running in uber mode : false 18/10/28 21:39:09 INFO mapreduce.Job: map 0% reduce 0% 18/10/28 21:39:17 INFO mapreduce.Job: map 1% reduce 0% 18/10/28 21:39:19 INFO mapreduce.Job: map 2% reduce 0% 18/10/28 21:39:20 INFO mapreduce.Job: map 3% reduce 0% ... 18/10/28 21:42:50 INFO mapreduce.Job: map 100% reduce 75% 18/10/28 21:42:53 INFO mapreduce.Job: map 100% reduce 80% 18/10/28 21:42:56 INFO mapreduce.Job: map 100% reduce 86% 18/10/28 21:42:59 INFO mapreduce.Job: map 100% reduce 92% 18/10/28 21:43:02 INFO mapreduce.Job: map 100% reduce 98% 18/10/28 21:43:05 INFO mapreduce.Job: map 100% reduce 100% ^@18/10/28 21:43:56 INFO mapreduce.Job: Job job_1540728986531_0006 completed successfully 18/10/28 21:43:56 INFO mapreduce.Job: Counters: 54 ...
Se os testes forem concluídos com êxito, as configurações estarão ativas.