1. 安装环境:
hadoop-1.0.3集群,节点215(namenode), 216,217, 218(datanode)
oracle11g ,节点156. 解压oraosch-2.2.0.zip到156节点,并copy 与hadoop集群一样配置的代码一份到156节点
2. 参照http://space.itpub.net/7607759/viewspace-761364 配置ORACLE连接HADOOP,但执行命令
hadoop jar \
> ${ORAHDFS_JAR} oracle.hadoop.hdfs.exttab.ExternalTable \
> -D oracle.hadoop.hdfs.exttab.tableName=odch_ext_table \
> -D oracle.hadoop.hdfs.exttab.datasetPaths=odch \
> -D oracle.hadoop.hdfs.exttab.datasetRegex=tmpdata.csv \
> -D oracle.hadoop.hdfs.exttab.connection.url="jdbc:oracle:thin:@//192.168.128.156:1521/gbl11g" \
> -D oracle.hadoop.hdfs.exttab.connection.user=lmy \
> -publish
不成功。没有报错,没提示输入密码,也没有结果跳出执行,找不到log,只好JD反编译代码,发现示例执行命令应该是这样:
hadoop jar \
> ${ORAHDFS_JAR} oracle.hadoop.exttab.ExternalTable \
> -D oracle.hadoop.exttab.tableName=odch_ext_table \
> -D oracle.hadoop.exttab.datasetPaths=hdfs:/usr/lmy/odch \
> -D oracle.hadoop.exttab.connection.url="jdbc:oracle:thin:@192.168.128.156:1521/gbl11g" \
> -D oracle.hadoop.exttab.connection.user=lmy \
> -publish
执行后报java.sql.exception,说用户名或口令错误。只好继续研究源码,发现输入的用户名,不知道为什么被加上了双引号,成了”scott",这样oracle肯定没这个用户名了。想想oracle不应该犯这种错误的啊,但又不能修改源码。只好找旧版,网上多数的link都是到oracle官网,但官网旧版本链接很难找。可以从这里下载2.1 版本的http://download.csdn.net/detail/jennyislyy/5952381。配置和上面2.2的基本一样。但执行命令报错如下图:
找不到原因,最后看有人说还是用旧版命令可解此问题,尝试果然不报上面的错。但又有新问题
发现是因为改成2.1版本后,未在oracle中创建2.1的dirtory。重新执行
- create or replace directory HDFS_BIN_PATH as '/usr/local/orahdfs-2.1.0/bin';
- grant read,write,execute on directory HDFS_BIN_PATH to lmy;
问题解决。