Oracle to Hive – Part I

Com a crescente realidade das tecnologias escaláveis de baixo custo e grande desempenho, o Big Data vem se afirmando cada dia mais como um conceito indispensável para as empresas, que precisam melhorar e acelerar as capacidades de decisão e com uma excelente adequação a realidade de crise financeira em escala mundial.

O mergulho neste oceano de soluções de Big Data, nos dá o prazer de redescobrir soluções conhecidas (como o datawarehousing e business inteligence) de uma forma livre e bem dinâmica. Livre por grande parte das soluções serem baseadas em soluções open source (adotada até mesmo por grandes fornecedores) e dinâmica pela grande vastidão de soluções.

Enfim, vamos ao que interessa, o objetivo é apresentar de forma simples de réplica entre uma base de dados Oracle e Hive.

Neste primeiro post, o objetivo é preparar o ambiente com tudo o que é necessário. Neste exemplo coloquei todos os componentes dentro de uma mesma VM, mas caso queriam, poder 2 VMs, uma com tudo que é o Hadoop + Hive e a outra com Oracle Database.

No segundo post, vamos configurar o mecanismo de replicação de Oracle para Hive.

Em um terceiro post irei abordar um initial load, ou carregamento total dos dados para Hive com o software Sqoop.

Para quem não conhece, Hive é uma base de dados mantida pela apache, que permite a trabalhar com os dados com linguagem SQL. Para mais detalhes, baste ir a página do hive na Apache, ou por aqui.

Descrição dos softwares/componentes utilizados:
  • Oracle Virtual Box
  • CentOS Linux 6.7 64 Bits
  • Hadoop 2.7.1
  • Hive 0.12
  • Oracle Database Server 11.2.0.4
  • Oracle Goldengate 11.2.1
  • Oracle Goldengate Adapters 11.2.1 (p16850747_112100_Linux-x86-64.zip)
Depois de ter o SO instalado, tem que se certificar que o java também está. O java é essencial para o funcionamento do Hadoop e Hive.
# java -version
java version “1.8.0_66” Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
Hadoop)
Ok, agora vamos preparar o ambiente para ter o Hadoop a funcionar:
# adduser hadoop
# passwd hadoop
# su – hadoop
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
$ ssh localhost
$ exit
Download do software necessário para o Hadoop e “install”:
$ cd ~
$tar xzf hadoop-2.7.1.tar.gz
$ mv hadoop-2.7.1 hadoop
Configurar as variáveis de ambiente:
$ vi ~/.bashrc
Acrescentar o conteúdo abaixo:
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_PREFIX=$HADOOP_HOME
export HIVE_HOME=$HADOOP_HOME/hive
export PATH=$HADOOP_HOME:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATH
Carregar as variáveis de ambiente:
$ source ~/.bashrc
Editar o ficheiro $HADOOP_HOME/etc/hadoop/hadoop-env.sh:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
$ cd $HADOOP_HOME/etc/hadoop
Editar o ficheiro core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://HOSTNAME:9000</value>
</property>
</configuration>
Editar o ficheiro hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name> <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name> <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
Editar o ficheiro mapred-site.xml:
<configuration>
<property>
<value>yarn</value>
</property>
</configuration>
Editar o ficheiro yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Depois de ter os ficheiros devidamente configurados, agora temos que formatar o namenode:
$ hdfs namenode -format
Exemplo de output da formatação:
20/03/16 16:32:56 INFO namenode.NameNode: STARTUP_MSG: /************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = hadoop.m04m.com/192.168.56.101
INFO namenode.NameNode: SHUTDOWN_MSG:
/*********************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop.m04m.com/192.168.56.101
************************/
Agora é iniciar os processos do Hadoop:
$ cd $HADOOP_HOME/sbin/
$ ./start-dfs.sh
$ ./start-yarn.sh
O serviço ficará disponível, para aceder ao serviço web, é utilizar o browser:
http://HOSTNAME:50070/
Hive)
Para realizar o download e instalação do Hive:
# groupadd hive
# usermod -g hive -G hadoop hadoop
# su – hadoop
$ cd $HADOOP_HOME
$ tar xzf hive-0.12.0-bin.tar.gz
$ mv hive-0.12.0-bin hive
$ chown -R hadoop hive
Iniciar o hive e configuração inicial:
$ cd $HIVE_HOME
$ export  HDFS_DATA=/home/hadoop/hadoopdata/hdfs/datanode
$ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir $HDFS_DATA/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w $HDFS_DATA/hive/warehouse
Para testar o Hive:
$ bin/hive
Logging initialized using configuration in jar:file:/home/hadoop/hadoop/hive/lib/hive-common-0.12.0.jar!/hive-log4j.properties
hive>
hive> CREATE TABLE teste (col1 string);
OK Time taken: 0.892 seconds
hive> SHOW TABLES;
OK
teste
Time taken: 0.185 seconds, Fetched: 1 row(s)
hive> DROP TABLE teste;
OK
Time taken: 1.452 seconds
Goldengate)
O mais importante para a integração do Goldengate com o Hive é os Adaptadores ou Conectores corretos, neste exemplo utilizei o adaptador disponível no site de suporte da Oracle (MOS): Oracle Goldengate Adapters 11.2.1 (p16850747_112100_Linux-x86-64.zip).
PS: Estes componentes para serem utilizados no cenário corporativo necessitam de licenciamento 🙂
Depois de ter o software do goldengate (tradicional instalado), é necessário realizar o unzip do ficheiro p16850747_112100_Linux-x86-64.zip e copiar os ficheiros e diretoria para o local onde se encontra os binários do Goldengate (tradicional), neste caso, vou referenciar por $OGG_HOME:
cp libggjava_ue.so $OGG_HOME
cp libggjava_vam.so $OGG_HOME
cp flatfilewriter.so $OGG_HOME
cp -r ggjava $OGG_HOME
Pronto, já temos o ambiente preparado para configurar nossa replicação de base de dados Oracle para Hive.
Não abordei a instalação da BD Oracle, pois acredito que não seja necessário 🙂

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s