动手实验2ODCHbjWord文档格式.docx

上传人:b****5 文档编号:21700131 上传时间:2023-01-31 格式:DOCX 页数:12 大小:19.92KB
下载 相关 举报
动手实验2ODCHbjWord文档格式.docx_第1页
第1页 / 共12页
动手实验2ODCHbjWord文档格式.docx_第2页
第2页 / 共12页
动手实验2ODCHbjWord文档格式.docx_第3页
第3页 / 共12页
动手实验2ODCHbjWord文档格式.docx_第4页
第4页 / 共12页
动手实验2ODCHbjWord文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

动手实验2ODCHbjWord文档格式.docx

《动手实验2ODCHbjWord文档格式.docx》由会员分享,可在线阅读,更多相关《动手实验2ODCHbjWord文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

动手实验2ODCHbjWord文档格式.docx

软件环境:

本实验主要由以下软件搭建而成:

OracleEnterpriseLinux,Oracle11g,JavaSE6pdate30,ApacheHadoop,OracleConnectorforHadoop等.

实验用到的文件:

实验用到的文件保存在/home/hadoop/training/ODCH底下.包括脚本文件以及一些示例数据文件。

环境变量:

在文件olhodchenv.sh中保存实验中需要用到的环境变量.为了简化操作,已经在实验中的$HOME/.bash_profile引用该文件,这些环境变量会自动生效。

变量名

变量值

ORACLE_HOME

/home/oracle/app/oracle/product/11.2.0/dbhome_2

HADOOP_HOME

/opt/hadoop

DIRECTHDFS_HOME

/opt/ODCH

ORAHDFS_JAR

$DIRECTHDFS_HOME/jlib/orahdfs.jar

HDFS_BIN_PATH

$DIRECTHDFS_HOME/bin

HADOOP_CONF_DIR

${HADOOP_HOME}/conf

ORACLE_SID

orcl

一些有用的信息

下表中也列出了实验中可能需要的一些信息.

项目

虚拟机IP

172.16.22.131

虚拟机主机名

bigdata01

HadoopdefaultFS

hdfs:

//bigdata01:

9000

HadoopJobTrackerURL

9001

实验用操作系统用户密码

hadoop/oracle

实验用数据库用户密码

Scott/tiger

操作系统oracle用户密码

oracle/oracle

数据库超级用户

sys/oracle

操作系统超级用户

root/oracle

文档中‘PROMPT>

’指的是操作系统SHELL的输入界面

‘SQL->

’指的是OracleSQL*Plus的输入界面

用hadoop/oracle登录172.16.22.131.

检查环境变量是否正确设置.

PROMPT>

env

应该能看到上面提到的环境变量.

检查hadoop是否正常.

hadoopdfsadmin-report

检查数据库是否正常

sqlplusscott/tiger

SQL>

select*fromtab;

配置hdfs_streamscript文件

实验4:

直接访问HDFS数据文件

Oracle的HDFS直接连接器允许从数据库中直接访问HDFS的数据文件。

支持的数据文件格式取决于ORACLE_LOADER的驱动程序。

在实验1里,我们将会直接访问HDFS上的几个带分割符的文本文件。

我们可以在数据库中用SQL来查询该文件。

配置hdfs_streamscript文件

在使用直接连接器前,需要配置hdfs_stream脚本.hdfs_stream是包含在ODCH的安装包中(ODCH_HOME/bin).我们需要在脚本中指定HADOOP_HOME和DIRECTHDFS_HOME.

cd/home/hadoop/training/ODCH

vi${DIRECTHDFS_HOME}/bin/hdfs_stream

exportHADOOP_HOME=/opt/hadoop

exportDIRECTHDFS_HOME=/opt/ODCH

另外Oracle用户需要在{$DIRECTHDFS_LOG_DIR}目录中创建log/bad文件.所以要确保Oracle用户有读写权限.

su-oracle

touch/opt/ODCH/log/oracle_access_test

rm/opt/ODCH/log/oracle_access_test

配置操作系统的目录和数据库的Directory对象

在ODCH里面,需要用到3个Directory对象:

HDFS_BIN_PATH:

hdfs_stream脚本所在目录.

XTAB_DATA_DIR:

用来存放“位置文件”(locationfiles)的目录。

“位置文件”(locationfiles)是一个配置文件,里面包含HDFS的文件路径/文件名以及文件编码格式。

ODCH_LOG_DIR,Oracle用来存放外部表的log/bad等文件的目录.

对于第一个目录,已经在操作系统存在。

对于第二和第三个目录,我们将会在操作系统中新创建,并且授予oracle用户读写权限。

检查脚本文件并运行之:

catlab4.2_setup_os_dir.sh

mkdir-p/home/hadoop/training/ODCH/logs

mkdir-p/home/hadoop/training/ODCH/extdir

chmod777/home/hadoop/training/ODCH/logs

chmod777/home/hadoop/training/ODCH/extdir

./lab4.2_setup_os_dir.sh

连接到数据库,建立相应的3个Directory对象,以及相关授权。

sqlplus'

sys/oracleassysdba'

!

catlab4.2_setup_DB_dir.sql

SETECHOON

createorreplacedirectoryODCH_LOG_DIRas'

/home/hadoop/training/ODCH/logs'

;

grantread,writeondirectoryODCH_LOG_DIRtoSCOTT;

createorreplacedirectoryODCH_DATA_DIRas'

/home/hadoop/training/ODCH/extdir'

grantread,writeondirectoryODCH_DATA_DIRtoSCOTT;

createorreplacedirectoryHDFS_BIN_PATHas'

/opt/ODCH/bin'

grantexecuteondirectoryHDFS_BIN_PATHtoSCOTT;

@lab4.2_setup_DB_dir.sql

创建外部表

我们将会创建外部表,里面有个ODCH的关键参数--“preprocessorHDFS_BIN_PATH:

hdfs_stream”。

另外,下面SQL脚本中的LOCATION对应的文件不用预先存在,我们会在步骤4中生成。

在LOCATION中使用多个文件,可以使Oracle可以多个程序并行访问HDFS。

catlab4.3_ext_tab.sql

droptableodch_ext_table;

CREATETABLEodch_ext_table

(IDNUMBER

OWNERVARCHAR2(128)

NAMEVARCHAR2(128)

MODIFIEDDATE

ValNUMBER

)ORGANIZATIONEXTERNAL

(TYPEoracle_loader

DEFAULTDIRECTORY"

ODCH_DATA_DIR"

ACCESSPARAMETERS

recordsdelimitedbynewline

preprocessorHDFS_BIN_PATH:

hdfs_stream

badfileODCH_LOG_DIR:

'

odch_ext_table%a_%p.bad'

logfileODCH_LOG_DIR:

odch_ext_table%a_%p.log'

fieldsterminatedby'

'

missingfieldvaluesarenull

IDDECIMALEXTERNAL,

OWNERCHAR(200),

NAMECHAR(200),

MODIFIEDCHARDATE_FORMATDATEMASK"

YYYY-MM-DDHH24:

MI:

SS"

ValDECIMALEXTERNAL

LOCATION(

odch_ext_table1.loc'

odch_ext_table2.loc'

odch_ext_table3.loc'

odch_ext_table4.loc'

)PARALLELREJECTLIMITUNLIMITED;

@lab4.3_ext_tab.sql

在Hadoop中放入示例文件

ODCH从Hadoop文件系统中读取数据.所以我们先要在Hadoop中放入几个的数据文件.下面的脚本先在Hadoop中建立一个目录,然后把odch*.dat放入该目录中.

catlab4.4_hdfs_setup.sh

${HADOOP_HOME}/bin/hadoopfs-rmrodch_data

${HADOOP_HOME}/bin/hadoopfs-mkdirodch_data

${HADOOP_HOME}/bin/hadoopfs-putodch*.datodch_data

echo"

rowsinfile:

"

wc-lodch*.dat

./lab4.4_hdfs_setup.sh

生成“位置文件”

我们需要让OracleHadoop直接连接器知道需要访问的HDFS上的文件路径。

下面运行的程序将会生成包含HDFS上文件路径的“位置文件”。

检查脚本文件并运行之

catlab4.5_create_loc_file.sh

hadoopjar\

${ORAHDFS_JAR}oracle.hadoop.hdfs.exttab.ExternalTable\

-Doracle.hadoop.hdfs.exttab.tableName=odch_ext_table\

-Doracle.hadoop.hdfs.exttab.datasetPaths=odch_data\

-Doracle.hadoop.hdfs.exttab.datasetRegex=odch*.dat\

-Doracle.hadoop.hdfs.exttab.connection.url="

jdbc:

oracle:

thin:

@//172.16.22.131:

1521/orcl"

\

-Doracle.hadoop.hdfs.exttab.connection.user=SCOTT\

-publish

./lab4.5_create_loc_file.sh

需要输入数据库用户的密码,本实验中是‘tiger’.

检查位置文件内容.

cat/home/hadoop/training/ODCH/extdir/odch_ext_table*.loc

CompressionCodec=

9000/user/hadoop/odch_data/odch.dat

这里CompressionCodec是默认值,HDFS文件指向hdfs:

步骤7:

检查结果

selectcount(*)fromodch_ext_table;

90000

91000是符合odch.*.dat的文件的总行数.

我们可以在sqlplus中设置autotrace,看看执行计划中是否有并行操作(“PX”)出现.

 

setautotracetraceexp

selectcount(*)fromodch_ext_para_table;

ExecutionPlan

----------------------------------------------------------

Planhashvalue:

2012719727

----------------------------------------------------------------------------------------------------------------------------

|Id|Operation|Name|Rows|Cost(%CPU)|Time|TQ|IN-OUT|PQDistrib|

|0|SELECTSTATEMENT||1|16(0)|00:

00:

01||||

|1|SORTAGGREGATE||1||||||

|2|PXCOORDINATOR||||||||

|3|PXSENDQC(RANDOM)|:

TQ10000|1|||Q1,00|P->

S|QC(RAND)|

|4|SORTAGGREGATE||1|||Q1,00|PCWP||

|5|PXBLOCKITERATOR||8168|16(0)|00:

01|Q1,00|PCWC||

|6|EXTERNALTABLEACCESSFULL|ODCH_EXT_PARA_TABLE|8168|16(0)|00:

01|Q1,00|PCWP||

当然,我们也可以进行其他的SQL语句,比如join,where,group之类的。

我们也可以通过CreateTableAsSelect方式将数据完全装载到数据库中。

hadoopfs-rmodch_data/odch1.dat

41000

数据已经更新。

直接访问多个HDFS文件

和实验1不一样,我们也可以使用多个HDFS文件作为Oracle外部表的输入。

而且,在存在多个HDFS的情况下,我们可以通过指定多个位置文件,从而允许Oracle并行的访问HDFS文件.

配置目录/Directory对象,和实验1一样.

运行脚本文件:

./lab2.1_setup_os_dir.sh

sqlplussys/oracleassysdba

@lab2.1_setup_DB_dir.sql

创建外部表,包含多个位置文件

多个位置文件允许Oracle并行的访问多个HDFS文件.

catlab2.2_ext_para_tab.sql

droptableodch_ext_para_table;

CREATETABLEodch_ext_para_table

odch_ext_para_table%a_%p.bad'

odch_ext_para_table%a_%p.log'

'

dch_ext_table_1.loc'

dch_ext_table_2.loc'

dch_ext_table_3.loc'

dch_ext_table_4.loc'

SQL>

@lab2.2_ext_para_tab.sql

在HDFS生成一组文件.

我们将在HDFS中生成一组文件,文件名应该有一些共性,以便使用表达式.

catlab2.3_hdfs_setup_grp.sh

${HADOOP_HOME}/bin/hadoopfs-putodch*.datodch_data/

./lab2.3_hdfs_setup_grp.sh

创建指向一组文件的位置文件

cat./lab2.4_create_mul_loc_files.sh

hadoopjar${ORAHDFS_JAR}oracle.hadoop.hdfs.exttab.ExternalTable\

-Doracle.hadoop.hdfs.exttab.tableName=odch_ext_para_table\

-Doracle.hadoop.hdfs.exttab.datasetRegex=odch.*.dat\

@//localhost.localdomain:

./lab2.4_create_mul_loc_files.sh

91000

COUNT(*)

----------

91000

hadoopfs-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1