炼数成金 门户 大数据 Oracle 查看内容

Oracle大数据连接器之OLH装载HDFS数据文件到数据库

2013-8-9 11:25| 发布者: 天空之城| 查看: 33782| 评论: 1|原作者: 吴飚|来自: 吴飚的博客

摘要: 在先前的Oracle大数据连接器(Oracle Big Data Connectors)之ODCH访问HDFS数据文件一文里有提到Oracle大数据解决方案及Oracle大数据机,而Oracle Big Data 针对Hadoop 架构的大数据连接器主要有两种。

数据库 Oracle Hadoop 大数据 RAC

在先前的Oracle大数据连接器(Oracle Big Data Connectors)之ODCH访问HDFS数据文件一文里有提到Oracle大数据解决方案及Oracle大数据机,而Oracle Big Data 针对Hadoop 架构的大数据连接器主要有两种:OLH(Oracle Loader for Hadoop)和ODCH(Oracle Direct Connector for Hadoop)。

 

本文主要尝试实验一下OLH(Oracle Loader for Hadoop)的使用,ODCH(Oracle Direct Connector for Hadoop)的使用参考:Oracle大数据连接器(Oracle Big Data Connectors)之ODCH访问HDFS数据文

相关环境

集群环境

Win7上用VMware搭建三个虚拟机环境,系统为Red Hat Enterprise 5.

三个节点的的IP、hostname分别为:

192.168.1.220       biao.oracle.com biao

192.168.1.221       biao1.oracle.com biao1

192.168.1.222        biao2.oracle.combiao2

biao节点RAM为3GB,biao1、biao2RAM为1GB,其中biao2克隆于biao1。

宿主环境

CPU:Inter(R) Core(TM) i5  M5602.67GHz

RAM:6GB

IP:192.168.1.101/192.168.1.4

软件版本

jdk版本为:jdk1.6.0_29

Hadoop版本为:hadoop-0.20.2.tar.gz

olh版本为:oraloader-1.1.0.0.3.x86_64.zip

oracle的版本为:11.2.0.1.0

其他说明
  1. hadoop为完全分布式,namenode安装在biao节点grid用户的home目录下,datanode分别安装在biao1、biao2节点的grid用户的home目录下。
  2. oracle数据安装在oracle用户的home目录下。
  3. odch安装在oracle用户的home目录下。
  4. 其他相应环境变量在第4步中有说明。

1.下载

官方地址:http://www.oracle.com/technetwork/bdc/big-data-connectors/downloads/index.html

Oracle大数据连接器OLH_1

这里的版本是2.0,想要1.0的仔细找找。实在找不到就在这下吧:http://f.dataguru.cn/forum.php?mod=viewthread&tid=39659&fromuid=4771

2.上传至相应目录

上传到用户oracle的home目录下,oracle数据库也安装在此:

Oracle大数据连接器OLH_2

3.解压

1[oracle@biao ~]$ unzip  oraloader-1.1.0.0.3.x86_64.zip
2 
3Archive:  oraloader-1.1.0.0.3.x86_64.zip
4 
5   creating: oraloader-1.1.0.0.3/
6 
7   creating: oraloader-1.1.0.0.3/jlib/
8 
9  inflating:  oraloader-1.1.0.0.3/jlib/orai18n.jar 
10 
11  inflating:  oraloader-1.1.0.0.3/jlib/orai18n-utility.jar  
12 
13  inflating:  oraloader-1.1.0.0.3/jlib/orai18n-mapping.jar  
14 
15  inflating:  oraloader-1.1.0.0.3/jlib/jackson-core-asl-1.5.2.jar 
16 
17  inflating:  oraloader-1.1.0.0.3/jlib/ojdbc6.jar 
18 
19  inflating:  oraloader-1.1.0.0.3/jlib/oraloader-examples.jar 
20 
21  inflating:  oraloader-1.1.0.0.3/jlib/commons-math-2.2.jar  
22 
23  inflating:  oraloader-1.1.0.0.3/jlib/orai18n-collation.jar 
24 
25  inflating:  oraloader-1.1.0.0.3/jlib/avro-1.5.4.jar  
26 
27  inflating:  oraloader-1.1.0.0.3/jlib/osdt_core.jar  
28 
29  inflating:  oraloader-1.1.0.0.3/jlib/oraloader.jar  
30 
31  inflating:  oraloader-1.1.0.0.3/jlib/avro-mapred-1.5.4.jar 
32 
33  inflating: oraloader-1.1.0.0.3/jlib/osdt_cert.jar 
34 
35  inflating:  oraloader-1.1.0.0.3/jlib/jackson-mapper-asl-1.5.2.jar 
36 
37  inflating:  oraloader-1.1.0.0.3/jlib/oraclepki.jar  
38 
39   creating: oraloader-1.1.0.0.3/lib/
40 
41  inflating:  oraloader-1.1.0.0.3/lib/libociei.so 
42 
43  inflating: oraloader-1.1.0.0.3/lib/libolh11.so 
44 
45  inflating:  oraloader-1.1.0.0.3/lib/libnnz11.so 
46 
47  inflating:  oraloader-1.1.0.0.3/lib/libclntsh.so.11.1  
48 
49   creating: oraloader-1.1.0.0.3/doc/
50 
51  inflating:  oraloader-1.1.0.0.3/doc/README.txt 
52 
53   creating: oraloader-1.1.0.0.3/examples/
54 
55   creating:  oraloader-1.1.0.0.3/examples/jsrc/
56 
57   creating:  oraloader-1.1.0.0.3/examples/jsrc/oracle/
58 
59   creating:  oraloader-1.1.0.0.3/examples/jsrc/oracle/hadoop/
60 
61   creating:  oraloader-1.1.0.0.3/examples/jsrc/oracle/hadoop/loader/
62 
63   creating:  oraloader-1.1.0.0.3/examples/jsrc/oracle/hadoop/loader/examples/
64 
65  inflating:  oraloader-1.1.0.0.3/examples/jsrc/oracle/hadoop/loader/examples/AvroInputFormat.Java 
66 
67  inflating:  oraloader-1.1.0.0.3/examples/jsrc/oracle/hadoop/loader/examples/CSVInputFormat.java

Oracle大数据连接器OLH_3

解压后目录结构为:

Oracle大数据连接器OLH_4

4.配置环境变量

如下所示,确保ORACLE_HOME、ORACLE_SID、HADOOP_HOME、HADOOP_CONF_DIR、OLH_HOME、OLH_JAR这6个环境变量在运行hadoop和oracle的用户环境变量中已正确配置。

1export  HADOOP_HOME=/develop/hadoop/hadoop-0.20.2
2 
3export  HADOOP_CONF_DIR=${HADOOP_HOME}/conf
4 
5export  ORACLE_HOME=$ORACLE_BASE/product/db_1
6 
7export ORACLE_SID=mydb
8 
9export  OLH_HOME=/oracle/oraloader-1.1.0.0.3
10 
11export  OLH_JAR=${OLH_HOME}/jlib/oraloader.jar

注意修改环境变量后要重启或者执行source命令更新配置。

5.启动oracle数据库

1[oracle@biao ~]$ rlwrap SQLplus / as  sysdba
2 
3SQL*Plus: Release 11.2.0.1.0 Production  on Thu Dec 13 01:31:40 2012
4 
5Copyright (c) 1982, 2009, Oracle.  All rights reserved.
6 
7Connected to an idle instance.
8 
9SQL> startup
10 
11ORACLE instance started.
12 
13Total System Global Area 1272213504 bytes
14 
15Fixed Size                  1336260 bytes
16 
17Variable Size             989858876 bytes
18 
19Database Buffers          268435456 bytes
20 
21Redo Buffers               12582912 bytes
22 
23Database mounted.
24 
25Database opened.

6.创建目标表

在数据库中scott下新建一个表,我们的数据将会装载到这个表里:

1-- Drop table if table exists
2 
3  drop table olh_table purge;
4 
5-- create table olh_table (col1 NUMBER, col2  VARCHAR2(30), col3 varchar2(30));
6 
7  create  table olh_table(
8 
9  col1 NUMBER, col2 VARCHAR2(30), col3 varchar2(30));

7.启动hadoop集群

1[grid@biao  ~]$ hadoop-0.20.2/bin/start-all.sh

Oracle大数据连接器ODCH_5 Oracle大数据连接器ODCH_6 Oracle大数据连接器ODCH_7

8. 将示例数据文件加载至hadoop集群

因为OLH需要从Hadoop文件系统中读取数据,所以我们先要在Hadoop中放入一个数据文件。新建数据文件olh.dat:

11,mayun,2012-05-26
218,shiyuzhu,2012-11-25
31,leijun,2012-06-27
411,zhouhongyi,2012-11-16
510,liyanhong,2012-08-04
64,mayun,2012-09-20
712,zhouhongyi,2012-06-10
82,qiubojun,2012-08-05
915,likaifu,2012-05-17
1015,liyanhong,2012-01-21
111,shiyuzhu,2012-11-12
1217,zhouhongyi,2012-07-31
1311,mahuateng,2012-08-23
1419,mayun,2012-06-01
155,mayun,2012-08-12
168,zhouhongyi,2012-06-19
1717,zhouhongyi,2012-10-16
187,zhouhongyi,2012-03-08
1915,likaifu,2012-09-14
2019,zhouhongyi,2012-11-21

下面的脚本先在Hadoop中建立一个目录,然后把olh.dat放入该目录中:

1[grid@biao ~]$ hadoop-0.20.2/bin/hadoop fs -rmr olh_lab_in
2rmr: cannot remove olh_lab_in: No such file or directory.
3[grid@biao ~]$ hadoop-0.20.2/bin/hadoop fs -mkdir olh_lab_in
4[grid@biao ~]$ hadoop-0.20.2/bin/hadoop fs -put olh.dat olh_lab_in

检查下数据:

1[grid@biao ~]$ hadoop-0.20.2/bin/hadoop fs -ls
2Found 5 items
3drwxr-xr-x   - grid supergroup          0 2012-11-27 20:04 /user/grid/in
4drwxr-xr-x   - grid supergroup          0 2012-12-13 19:00 /user/grid/odch_data
5drwxr-xr-x   - grid supergroup          0 2012-12-15 00:55 /user/grid/olh_lab_in
6drwxr-xr-x   - grid supergroup          0 2012-11-27 19:51 /user/grid/out
7drwxr-xr-x   - grid supergroup          0 2012-12-11 01:51 /user/grid/test
8[grid@biao ~]$ hadoop-0.20.2/bin/hadoop fs -ls /user/grid/olh_lab_in
9Found 1 items
10-rw-r--r--   2 grid supergroup        467 2012-12-15 00:55 /user/grid/olh_lab_in/olh.dat
11[grid@biao ~]$ hadoop-0.20.2/bin/hadoop fs -cat /user/grid/olh_lab_in/olh.dat
121,mayun,2012-05-26
1318,shiyuzhu,2012-11-25
141,leijun,2012-06-27
1511,zhouhongyi,2012-11-16
1610,liyanhong,2012-08-04
174,mayun,2012-09-20
1812,zhouhongyi,2012-06-10
192,qiubojun,2012-08-05
2015,likaifu,2012-05-17
2115,liyanhong,2012-01-21
221,shiyuzhu,2012-11-12
2317,zhouhongyi,2012-07-31
2411,mahuateng,2012-08-23
2519,mayun,2012-06-01
265,mayun,2012-08-12
278,zhouhongyi,2012-06-19
2817,zhouhongyi,2012-10-16
297,zhouhongyi,2012-03-08
3015,likaifu,2012-09-14
3119,zhouhongyi,2012-11-21
32[grid@biao ~]$ [grid@biao ~]$

Oracle大数据连接器OLH_8

9.拷贝jar包

这个jar包网上一搜一大把。拷贝oracle的驱动jar包到hadoop的lib目录下:

1[grid@biao ~]$ cp ojdbc6.jar hadoop-0.20.2/lib

拷贝OLH/jlib下i18n相关的jar包到hadoop的lib目录下:

1[grid@biao ~]$ cp /oracle/oraloader-1.1.0.0.3/jlib/orai18n*.jar hadoop-0.20.2/lib

10.配置MyConf.xml和loaderMap.xml文件

MyConf.xml文件里包含里一些运行OLH所需的主要参数,我们也可以不用文件配置,而通过-D 的方式直接在命令行指定参数。
loaderMap.xml指定hdfs文件与oracle表的映射关系。


MyConf.xml:

1<?xml version="1.0" encoding="UTF-8" ?>
2<configuration>
3 
4<!--                          Input settings                             -->
5 
6<property>
7   <name>mapreduce.inputformat.class</name>
8   <value>oracle.hadoop.loader.lib.input.DelimitedTextInputFormat</value>
9</property>
10 
11<property>
12   <name>mapred.input.dir</name>
13   <value>olh_lab_in</value>
14</property>
15 
16<!--                          Output settings                             -->
17<property>
18   <name>mapreduce.outputformat.class</name>
19   <value>oracle.hadoop.loader.lib.output.JDBCOutputFormat</value>
20</property>
21 
22<property>
23   <name>mapred.output.dir</name>
24   <value>olh_lab_out</value>
25</property>  
26 
27<!--                          Table information                           -->
28 
29<property>
30   <name>oracle.hadoop.loader.loaderMapFile</name>
31   <value>file:///develop/hadoop/loaderMap.xml</value>
32</property>  
33 
34<!--                          Connection information                      -->
35 
36<property>
37  <name>oracle.hadoop.loader.connection.url</name>
38    <value>jdbc:oracle:thin:@//192.168.1.220:1521/mydb</value>
39</property>
40 
41<property>
42    <name>oracle.hadoop.loader.connection.user</name>
43    <value>SCOTT</value>
44    <description>AvroSchemaAwareDBInputFormat wants this case sensitive!
45                (cause mapred.jdbc.username points here)</description>
46</property>
47 
48<property>
49    <name>oracle.hadoop.loader.connection.password</name>
50    <value>tiger</value>      
51</property>
52 
53</configuration>

loaderMap.xml:

1<?xml version="1.0" encoding="UTF-8" ?>
2 
3<LOADER_MAP>
4<SCHEMA>SCOTT</SCHEMA>
5<TABLE>OLH_TABLE</TABLE>
6<COLUMN field="F0">COL1</COLUMN>
7<COLUMN field="F1">COL2</COLUMN>
8<COLUMN field="F2">COL3</COLUMN>
9</LOADER_MAP>


12下一页

鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 peter_zhang921 2013-8-10 14:05
感觉从Oracle到HD的场景会多一些,Hadoop到Oracle直接导出扁平文件在用SQLLoder会不会更加可操作,这个OLH有性能上的优势吗

查看全部评论(1)

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2019-5-24 09:22 , Processed in 0.182846 second(s), 22 queries .