大数据这股旋风越刮越猛烈,HADOOP家族有这股东风做助力更是如虎添翼,传统的软件厂商,比如像ORACLE这类本身就标榜着数据处理专业户的也不甘落后,提供了专门的连接器,用于处理大数据。不仅仅是努力提高自身能力,而且还可以通过配置,读取HADOOP中HDFS保存的数据。今天,咱们尝试两种读取HADOOP中数据的方案。
1、准备工作
要读取HADOOP中的数据,就需要节点能够连接HADOOP。HADOOP环境中的namenode和datanode天生就拥有这个能力,因此网上有不少文章,在配置ORACLE读取HADOOP数据时,都是选择在HADOOP节点中安装ORACLE数据库。我个人觉着这样有些不妥,因为数据节点即承担计算和存储,又提供ORACLE服务,相互之间肯定还是会有影响。最好还是ORACLE服务器提供ORACLE服务,HADOOP集群提供HDFS/M-R能力。
HADOOP家族目前已经发展到很庞大,但我觉着HADOOP的体系还是挺简单,若想让一个节点拥有访问HADOOP的能力其实很简单。安装好JAVA JDK,解压缩hadoop,配置好用户,它就能向hdfs中读写数据,或者提交M-R任务。
因此,我们只需要在某个安装了ORACLE的数据库服务器上,配置hadoop软件就行了。
设定环境如下:
- Hadoop集群:
- 节点:192.168.30.203/204/205/206/207
- 版本:0.20.2
- Oracle数据库:
- IP:192.168.30.244
- 版本:11gR2
- SID:jssdb
在本例中,我们使用Oracle11gR2版本数据库,安装步骤略,如有不明白的可以参考:三思笔记RHEL5下安装Oracle11gR2(http://www.5ienet.com/note/html/st11g/index.shtml)。假设目前ORACLE数据库软件已经安装好,数据库服务已经启动。如何使其能够连接HADOOP呢,往下看。
创建用户,用户名与HADOOP节点中的用户名相同,这里为grid:
[root@ora11g ~]# useradd grid
[root@ora11g ~]# passwd grid从当前任意hadoop节点复制hadoop目录到oracle服务器(jdk可以同样方式处理):
[root@hdnode3 ~]# tar cvfz /tmp/hadoop-0.20.2.tar.gz hadoop-0.20.2
[root@hdnode3 ~]# scp /tmp/hadoop-0.20.2.tar.gz grid@192.168.30.244:/data/software/以下操作则是在ORACLE节点中执行:
[root@ora11g ~]# tar xvfz hadoop-0.20.2.tar.gz -C /usr/local/
[root@ora11g ~]# chown -R grid:grid /usr/local/hadoop-0.20.2
[root@ora11g ~]# tar xvfz jdk1.7.tar.gz -C /usr/local/
[root@ora11g ~]# chown -R grid:grid /usr/local/jdk1.7.0_09复制jdbc链接库文件到hadoop lib目录:
- [root@ora11g ~]# cp /data/ora11g/product/11.2.0/db_1/jdbc/lib/ojdbc6.jar /usr/local/hadoop-0.20.2/lib/
编辑grid用户环境变量,加入与HADOOP相关的环境变量:
- [grid@ora11g ~]$ vi /home/grid/.bash_profile
增加下列内容:
export JAVA_HOME=/usr/local/jdk1.7.0_09
export HADOOP_HOME=/usr/local/hadoop-0.20.2
export HADOOP_CONF_DIR=${HADOOP_HOME}/conf配置完成之后,可以执行hadoop命令,看看是否能够连接HADOOP集群,读取HDFS中的文件:
[grid@localhost ~]$ hadoop dfs -ls
Found 9 items
drwxrwxrwx - grid supergroup 0 2013-05-16 13:11 /user/grid/.Trash
drwxrwxrwx - grid supergroup 0 2013-04-22 11:43 /user/grid/jss
drwxr-xr-x - grid supergroup 0 2013-02-17 20:08 /user/grid/jsscount
drwxrwxrwx - grid supergroup 0 2013-03-05 15:39 /user/grid/jssout
drwxrwxrwx - grid supergroup 0 2013-05-15 11:59 /user/grid/ld_sql
drwxr-xr-x - grid supergroup 0 2013-03-14 17:18 /user/grid/smssend
drwxr-xr-x - grid supergroup 0 2013-03-15 10:23 /user/grid/web
drwxrwxrwx - grid supergroup 0 2013-03-15 10:36 /user/grid/webout-m
drwxrwxrwx - grid supergroup 0 2013-03-15 10:36 /user/grid/webout-s这样新节点连接HADOOP配置好了,接下来的重心,就是如何通过ORACLE读取HADOOP中的数据了。