Linux下Hadoop的分布式配置和使用_第1页
Linux下Hadoop的分布式配置和使用_第2页
Linux下Hadoop的分布式配置和使用_第3页
Linux下Hadoop的分布式配置和使用_第4页
Linux下Hadoop的分布式配置和使用_第5页
已阅读5页,还剩154页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 2 Hadoop配置建议所有配置文件中使用主机名进行配置,并且机器上应在防0集群网络环境介绍所有节点上均创建了一个hadoop用户,用户主目录是/home/hadoop。将所有节点的名字和IP地址写入其中,写入如下内容,注意注释掉3下:namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,上生成密码对,所有节点上执行以下命令:Generatingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/home/hadoop/.ssh/id_rsa):默认路径Enterpassphrase(emptyfornopassphrase):回车,空密码Entersamepassphraseagain:Youridentificationhasbeensavedin/home/hadoop/.ssh/id_rsa.Yourpublickeyhasbeensavedin/home/hadoop/.ssh/id_rsa.pub.cpid_rsa.pubauthorized_keysnamenode的公钥使用SSH协议将namenode的公钥信息authorized_key复s制到所有DataNod.ssh目录下。4cpid_rsa.pubdatanode01.id_rsa.pubcpid_rsa.pubdatanoden.id_rsa.pubesapubauthorizedkeysnamenodecatdatanode01.id_rsa.pub>>authorized_keys...catdatanode0n.id_rsa.pub>>authorized_keys53.1安装JDK1.6装包jdk-6u13-linux-i586.bin,复制到目录/usr/program下,在命令行进入该目Chown-Rnutch:nutch/usr/program#setjavaenvironmentexportJAVA_HOME=/usr/program/jdk1.6.0_13/exportJRE_HOME=/usr/program/jdk1.6.0_13/jreexportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH配置完毕,在命令行中使用命令”java-version”可以判断是否成功。在amenodeetcprofile执行命令:scp/etc/profileroot@datanodeip:/etc/profile6hexportJAVA_HOME=/usr/program/jdk1.6.0_13/<<?xmlversion="1.0"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><!--Putsite-specificpropertyoverridesinthisfile.--><configuration><!—core-site.xml--><property><name></name><value>hdfs://gc03vm12:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/hadooptmp</value>ion</property><!—hdfs-site.xml--><property><name>.dir</name><value>/usr/local/hadoop/hdfs/name</value></property><property><name>dfs.data.dir</name><value>/usr/local/hadoop/hdfs/data</value><description>datanode上数据块的物理存储位置</description>7</</property><property><name>dfs.replication</name><value>2</value></property><!—mapred-site.xml--><property><name>mapred.job.tracker</name><value>gc03vm12:9001</value>njobtrackerURIdescription</property><property><name>mapred.local.dir</name><value>/usr/local/hadoop/mapred/local</value></property><property><name>mapred.system.dir</name><value>/tmp/hadoop/mapred/system</value></property></configuration>8bin/hadoopnamenode–formatetasktracker2。##jps8383JobTracker8733Jps8312SecondaryNameNode8174NameNode##jps7636DataNode7962Jps7749TaskTrackerbin/hadoopdfsadmin–reportConfiguredConfiguredCapacity:16030539776(14.93GB)PresentCapacity:7813902336(7.28GB)DFSRemaining:7748620288(7.22GB)DFSUsed:65282048(62.26MB)DFSUsed%:0.84%Datanodesavailable:2(2total,0dead)Name:42:500109Name:Name:44:50010DecommissionStatus:NormalConfiguredCapacity:8015269888(7.46GB)DFSUsed:32641024(31.13MB)NonDFSUsed:3851784192(3.59GB)DFSRemaining:4130844672(3.85GB)DFSUsed%:0.41%DFSRemaining%:51.54%Lastcontact:ThuMay1306:17:59CST2010DecommissionStatus:NormalConfiguredCapacity:8015269888(7.46GB)DFSUsed:32641024(31.13MB)NonDFSUsed:4364853248(4.07GB)DFSRemaining:3617775616(3.37GB)DFSUsed%:0.41%DFSRemaining%:45.14%Lastcontact:ThuMay1306:17:57CST20109.L.L域-岭湿置(2)集群之外的机器请保证和Hadoop集群是网络连通的,并且安装了Hadoop解(压安装包即可)并在conf/hadoop-site.xl做了相关配置,至少配置如下:<<configuration><!—core-site.xml--><property><name></name><value>hdfs://gc04vm12:9000</value><description></description></property><!—<!—mapred-site.xml--><property><name>mapred.job.tracker</name><value>gc03vm12:9001</value>njobtrackerURIdescription</property></configuration>[root@gc03vm12nutch-1.0]#bin/hadoopdfs-ls/Found3itemsdrwxr-xr-x-hadoopsupergroup02010-05-2100:42/tmpdrwxr-xr-x-hadoopsupergroup02010-05-2100:53/userdrwxr-xr-x-hadoopsupergroup02010-05-2100:55/usrsls:Cannotaccess.:Nosuchfileordirectory.注意:这里的当前用户主目录是客户机中当前登录用户的主目录,即HDFS注意:若此处没有指定组,则默认将root用户分配到supergroup组,bin/hadoopdfs-chown-Rroot/user/root[root@gc03vm12nutch-1.0]#bin/hadoopdfs–copyFromLocal/local/xDFSHadoop-site.xml文件中的dfs.replication参数指定了数据块的副本数LinuxLinuxmrdrwx-wx-wx-nutchsupergroup/tmp/hadoop/mapred/system(即此)hdfs://namenode:端口/xxxx/xxxxIhdfs://gc04vm12:9000/tmp/hadoop/mapred/system(2)集群之外的机器请保证和Hadoop集群是网络连通的,并且安装了Hadoop解(压安装包即可)并在conf/hadoop-site.xl做了相关配置,至少配置如下:<<configuration><!—core-site.xml--><property><name></name><value>hdfs://gc04vm12:9000</value><description></description></property><!—mapred-site.xml--><property><name>mapred.job.tracker</name><value>gc03vm12:9001</value>njobtrackerURIdescription</property></configuration>命令执行完毕,在页面http://namenodeip:50030/中能够看到作业执行情程序将统计mytest目录下的所有文本文件中词语的数量,并将结果输出到这里介绍一个向HDFS中写入数据的例子(注意不是MR程序)来说明编写Hadoop应用程序并放到集群上运行的步骤。(1)客户端编写应用程序并编译运行,进行测试。编写程序一般需要引入hadoop相关jar包或者直接使用hadoop整个程序包,Operatorjarbin/hadoopfs–copyFromLocallocaldst这里使用的命令是:bin/hadoopjar~/jarseclipse/dfsOperator.jarDFSOperatorp<<configuration><!—core-site.xml--><property><name></name><value>hdfs://gc04vm12:9000</value><description></description></</property><!—mapred-site.xml--><property><name>mapred.job.tracker</name><value>gc03vm12:9001</value>njobtrackerURIdescription</property></configuration>p<?xmlversion="1.0"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><!--Putsite-specificpropertyoverridesinthisfile.--><configuration><!—core-site.xml--><property><name></name><value>hdfs://localhost:9000</value></property><!—hdfs-site.xml--><property><name>dfs.replication</name><value>1</value></property><!—mapred-site.xml--><<property><name>mapred.job.tracker</name><value>localhost:9001</value>njobtrackerURIdescription</property></configuration>eNamedefaultWyjobVERYHIGHpublicclassDFSOperator{publicstaticvoidmain(Stringargs[]){Configurationconf=newConfiguration();//itwillreadconf/*.xml,suchasf//Pathf=newPath("hdfs:///javawrhdfsfile");//hdfsrootdirectory,itmustbethreeorone"/"//Pathf=newPath("hdfs:/javawrhdfsfile");//absolutepath,f.isAbsolute()isleilefsgcvmjavawrhdfsfileii}out.close();System.out.println("writefinished,itproducedafile:"+f.toString());//System.out.println("readthefile:"+f.toString());FSDataInputStreamin=fs.open(f);IOUtils.copyBytes(in,System.out,4096,false);System.out.println("readfinished!");IOUtils.closeStream(out);}catch(IOExceptione){e.printStackTrace();}}}附录资料:不需要的可以自行删除DB2安装配置学习笔记1、安装前准备工作将下载的安装文件上传到待安装的LINUX机器,解压缩到某个目录,产生了一个名为Server的子目录,进入子目录,可以看到有多个可执行的脚本,其中db2prereqcheck一个db2目录,保存了需要安装的二进制文件。执行db2prereqcheck,如果没有返回任何结果,表明系统符合DB2安装的先决条件,可以进入下一步安装。如果返回信息,请按信息提示修改配置,然后再次运行,直到没有错误提示。[[root@redflag11012601app]#llv*gz-rw-r--r--1rootroot81057639205-0319:44v9.7_linuxx64_server.tar.gz[[root@redflag11012601app]#tarxzfv9.7_linuxx64_server.tar.gz[[root@redflag11012601app]#cdserver[[root@redflag11012601server]#ll总计64drwxr-xr-x6binbin40962009-11-16db2-r-xr-xr-x1binbin53402009-11-16db2ckupgrade-r-xr-xr-x1binbin52932009-11-16db2_deinstall-r-xr-xr-x1binbin51632009-11-16db2_install-r-xr-xr-x1binbin51272009-11-16db2ls-r-xr-xr-x1binbin51452009-11-16db2prereqcheck-r-xr-xr-x1binbin51452009-11-16db2setupdrwxr-xr-x15binbin40962009-11-16doc-r-xr-xr-x1binbin51812009-11-16installFixPack[[root@redflag11012601server]#./db2prereqcheckDB据库软件以操作系统root用户执行db2_install,根据提示操作,设定安装目录和要安装的版本ESE由于操作系统默认语言为简体中文,安装界面也是中文提示的,而且,必须输入中文"是"才能更改安装目录。和大多数unix下的软件一样,软件安装只是整个安装过程很小的一步,要使软件能正常工作,大量的配置和管理任务还在后头。[[root@redflag11012601server]#./db2_install用于安装产品的缺省目录-/opt/ibm/db2/V9.7***********************************************************要选择另一个目录用于安装吗?[是/否Y要选择另一个目录用于安装吗?[是/否]要选择另一个目录用于安装吗?[是/否]是输入安装目录的完整路径名/user1/ibm/db2/V9.7指定下列其中一个关键字以安装DB2产品。ESE--企业版CONSVWSE--工作组版EXP--易捷版PE--个人版CLIENT按“帮助”以重新显示产品名称。***********************************************************正在初始化DB2安装。任务#1启动描述:正在检查许可协议的接受情况估计时间1秒任务#1结束任务#47启动描述:正在注册DB2更新服务估计时间30秒任务#47结束任务#48启动描述:正在更新全局概要文件注册表估计时间3秒任务#48结束有关更多信息,请参阅"/tmp/db2_install.log.27290"上的DB2安装日志。本安装因为是评估版无须这一步。用户可以在90天内完全测试全部功能。对于购买了se4、创建DB2运行所需要的用户组和用户DB2没有独立的用户管理系统,必须借用OS用户来提供安全性认证,所以这里需要创建LINUX用户和组。一共创建了3个组,每个组一个用户。其作用和含义分别是:biadm其中管理实例的用户db2inst1是最常用的,我们为它设置口令db2,以便下面步骤的正常操作。创建完成后,执行如下命令查看/etc/group和/etc/passwd,检查用户组和用户[[root@redflag11012602server]#groupadd-g901db2grp[[root@redflag11012602server]#groupadd-g902db2fgrp[[root@redflag11012602server]#groupadd-g903db2agrp[root@redflag11012602server]#useradd-gdb2grp-u801-d/home/db2inst1-m-s/bin/shdb2inst1[root@redflag11012602server]#useradd-gdb2fgrp-u802-d/home/db2fenc-m-s/bin/shdb2fenc[root@redflag11012602server]#useradd-gdb2agrp-u803-d/home/db2das-m-s/bin/shdb2das[[root@redflag11012602server]#passwddb2inst1Changingpasswordforuserdb2inst1.NewUNIXpassword:BADPASSWORD:itisWAYtooshortRetypenewUNIXpassword:passwd:allauthenticationtokensupdatedsuccessfully.[[root@redflag11012602server]#more/etc/group|grepdb2db2grp:x:901:db2fgrp:x:902:db2agrp:x:903:[[root@redflag11012602server]#more/etc/passwd|grepdb2db2inst1:x:801:901::/home/db2inst1:/bin/shdb2fenc:x:802:902::/home/db2fenc:/bin/shdb2das:x:803:903::/home/db2das:/bin/sh、创建实例dascrt创建的是DB2adminstrationserver,每台服务器只有一个这种server,为进行DB2管理(比如运行控制中心)所必须,同时指定其管理用户是db2das;db2icrt创建的是实例,其名字一般和管理用户名一样,这里均为db2inst1;创建成功以后,系统在db2das和db2inst1相应的home目录下产生了一个子目录。dbDBINSTANCE路径,库的路径等,必须执行它,才能进行各种操作,或者将.~/sqllib/db2profile一行加入/home/db2inst1/.profile文件(因为创建dbinstshellbinshshell用不同的profile文件,比如bash则采用.bash_profile),这样当切换到db2inst1用户时就会自动执行这个脚本。db2das用户的设置脚本文件位于/home/db2das/das/dasprofile,同样需要执行这个脚本,才能执行db2admin等命令。用db2ilist命令可以查出当前已创建的实例名。[[root@redflag11012602server]#cd/user1/ibm/db2/V9.7/instance[[root@redflag11012602instance]#./dascrt-udb2dasSQL4406WTheDB2AdministrationServerwasstartedsuccessfully.DBI1070IProgramdascrtcompletedsuccessfully.[[root@redflag11012602instance]#./db2icrt-udb2inst1db2inst1DBI1070IProgramdb2icrtcompletedsuccessfully.--sh-3.2$db2ilistdb2inst1root用户也可以执行db2adminstart命令。如果首次执行,则会提示如下横线以下信[[root@redflag11012601das]#su-db2das-sh-3.2$.das/dasprofile-sh-3.2$db2adminstartSQL4406WTheDB2AdministrationServerwasstartedsuccessfully.[[root@redflag11012602instance]#su-db2inst1-sh-3.2$lsDesktopsqllib-sh-3.2$.sqllib/db2profile-sh-3.2$db2start05/05/201120:13:0800SQL1063NDB2STARTprocessingwassuccessful.SQL1063NDB2STARTprocessingwassuccessful.[[root@redflag11012601bin]#./db2adminstartSQL4409WTheDB2AdministrationServerisalreadyactive.7、创建和访问数据库首先要启动数据库实例,切换到db2inst1用户,执行db2start命令启动数据库实例。若需要,首先用db2stop命令停止实例,如果db2stop命令不能成功执行,可运行下面的命令来关闭数据库实例。首先在db2inst1用户下强制关闭实例上的所有应用程序。$$db2forceapplicationsallp启动数据库实例后用db2createdatabase命令创建数据库,可以设定字符集、页大小数据库创建成功后,可以用db2connectto命令连接数据库。然后就可以进行创建表、如果要尽快测试db2数据库的功能,也可以用命令创建db2自带的sample数据库。--sh-3.2$db2stop2011-05-0911:01:5600SQL1025NThedatabasemanagerwasnotstoppedbecausedatabasesarestillactive.SQL1025NThedatabasemanagerwasnotstoppedbecausedatabasesarestillactive.--sh-3.2$db2forceapplicationsallDB20000ITheFORCEAPPLICATIONcommandcompletedsuccessfully.DB21024IThiscommandisasynchronousandmaynotbeeffectiveimmediately.--sh-3.2$db2stop2011-05-0911:06:0300SQL1064NDB2STOPprocessingwassuccessful.SQL1064NDB2STOPprocessingwassuccessful.--sh-3.2$db2start05/08/201111:14:2400SQL1063NDB2STARTprocessingwassuccessful.SQLSQL1063NDB2STARTprocessingwassuccessful.-sh-3.2$db2"createdatabasetpchUSINGCODESETUTF-8TERRITORYCNpagesize32KDB20000ITheCREATEDATABASEcommandcompletedsuccessfully.--sh-3.2$db2connecttotpch;DatabaseConnectionInformationDatabaseserver=DB2/LINUXX86649.7.4SQLauthorizationID=DB2INST1Localdatabasealias=TPCHdbdb2=>select*fromdual;YX1record(s)selected.sh-3.2$cd/user1/ibm/db2/V9.7/bin--sh-3.2$./db2samplStartingtheDB2instance...Creatingdatabase"SAMPLE"...Connectingtodatabase"SAMPLE"...Creatingtablesanddatainschema"DB2INST1"...CreatingtableswithXMLcolumnsandXMLdatainschema"DB2INST1"...StoppingtheDB2instance...'db2sampl'processingcomplete.注意:如果创建数据库时没有指定创建位置,默认创建在/home/db2inst1/实例名下,在此用Linux的ln-s命令将其他位置映射到此目录下。更好的办法是在一开始做好容量规划,将数据库创建目录指定到大容量的目录,具体命令行写法参考文档。软连接的例子如下:[[db2inst1@aix:/home/db2inst1]#>cp-Rdb2inst1/arch/IBM/ts[[db2inst1@aix:/home/db2inst1]#>du-s/arch/IBM/ts/db2inst120111984/arch/IBM/ts/db2inst1[[db2inst1@aix:/home/db2inst1]#>mvdb2inst1db2inst1ori[[db2inst1@aix:/home/db2inst1]#>ls-ltotal8drwxrwxr-x3db2inst1db2iadm1256May1016:03db2inst1oridrwxrwsr-t23db2inst1db2iadm14096May1015:49sqllib[[db2inst1@aix:/home/db2inst1]#>ln-s/arch/IBM/ts/db2inst1db2inst1ootdbiautodbinstLINUX这一步是可选的。用户应该按自己的实际需要决定是否设置。选项-on表示自动启动,-off表示不随操作系统启动自动启动。[[root@redflag11012601das]#cd/user1/ibm/db2/V9.7/instance[root@redflag11012601instance]#./db2iauto-ondb2inst1DB2软件在创建实例的过程中,自动在操作系统中增加了相关的服务,并指定了相应的P首先查看/etc/services中db2各个服务的端口号,这里DB2_db2inst1默认端口就是60000。修改DB2的服务端口为上述默认端口号。db2updatedbmcfgusingSVCENAME命令提示,需要重新启动实例,再用clpplus命令验证网络设置成功--sh-3.2$db2setDB2COMM=TCPIP--sh-3.2$db2setDB2_COMPATIBILITY_VECTOR=ORADB2_EXTENDED_OPTIMIZATION=onDBLIKEVARCHAR=y,yDB2_HASH_JOIN=YDB2MEMMAXFREE=8000000DB2MEMDISCLAIM=YDB2_MMAP_WRITE=NODB2_MMAP_READ=NODB2_RR_TO_RS=ONDB2COMM=TCPIP--sh-3.2$db2getdbmcfg|grepSVCENAMETCP/IPServicename(SVCENAME)=SSLservicename(SSL_SVCENAME)=--sh-3.2$tail/etc/servicescom-bardac-dw48556/udp#com-bardac-dwiqobject48619/tcp#iqobjectiqobject48619/udp#iqobject##Localservicescsync2005/tcp#CyrusIMAPReplicationDaemoncsync2005/udp#CyrusIMAPReplicationDaemonDB2_db2inst160000/tcpDB2_db2inst1_160001/tcpDB2_db2inst1_260002/tcpDB2_db2inst1_END60003/tcp--sh-3.2$db2updatedbmcfgusingSVCENAME60000DB20000ITheUPDATEDATABASEMANAGERCONFIGURATIONcommandcompletedsuccessfully.SQL1362WOneormoreoftheparameterssubmittedforimmediatemodificationwerenotchangeddynamically.ClientchangeswillnotbeeffectiveuntilthenexttimetheapplicationisstartedortheTERMINATEcommandhasbeenissued.ServerchangeswillnotbeeffectiveuntilthenextDB2STARTcommand.--sh-3.2$db2stopforce2011-05-0819:36:0000SQL1064NDB2STOPprocessingwassuccessful.SQL1064NDB2STOPprocessingwassuccessful.--sh-3.2$db2start05/08/201119:36:0600SQL1063NDB2STARTprocessingwassuccessful.SQL1063NDB2STARTprocessingwassuccessful.--sh-3.2$clpplusdb2inst1/db2@localhost/sample数据库连接信息主机名=localhost数据库服务器=DB2/LINUXX8664SQL09071SQL授权标识=db2inst1本地数据库别名=SAMPLE端口=60000CLPPlus:版本1.1Copyright??2009,IBMCORPORATION.Allrightsreserved.SQL>root用户利用vi文本编辑器在/etc/services中按如下格式添加一行,保存修改。然后再执行上述步骤,同时db2updatedbmcfgusingSVCENAME命令后面要用自定义的服务名。tpch50000/tcp#DB2连接服务端口--sh-3.2$db2updatedbmcfgusingSVCENAMEtpch--sh-3.2$clpplusdb2inst1/db2@localhost:50000/tpchamperformedanoperationwhichrequiresit.DB250006E:命令行处理器扩展器(CLPPlus)未能启动。--sh-3.2$clpplus-nwdb2inst1/db2@localhost:50000/tpchCLPPlus:版本1.4Copyright??2009,2011,IBMCORPORATION.Allrightsreserved.主机名=localhost数据库服务器=DB2/LINUXX8664SQL09074SQL授权标识=db2inst1本地数据库别名=TPCH端口=50000SQL>settimionSQL>selectsysdatefromdual;12011-05-0815:32:36SQL>w如果不加这个参数,则无法在文字终端中使用。注意:对于需要网络访问,包括jdbc方式访问数据库,这一步必不可少。否则,虽然usjdbc1、几个概念在前面安装配置过程中,我们已经接触到一些DB2数据库的概念,其中有些概念与其它数据库有所区别。下面着重解释一下系统、数据库软件、实例和数据库的关系。(1)数据库软件可以在单台机器上安装多个DB2产品。每个DB2副本可以处于相同代码级别,也可DB2产品的root用户安装可安装到您选择的安装路径中。缺省安装路径,对于Linux比如/opt/ibm/db2/V9.7_1。仅在使用“DB2安装”向导安装DB2副本时,缺省路径的序号才会自动递增。无论使用哪种安装方法,都不能将另一个完整产品安装在另一个DB2副本所在的路径中(例如,/opt/ibm/db2/V9.7),也不支持安装到现有DB2副本的子目录中。可使用db2ls命令可帮助您跟踪已安装的DB2产品及其安装路径。运行db2ls命令以找到安装在系统上的DB2产品。(2)实例实例是逻辑数据库管理器环境,您可以在此环境中对数据库进行编目和设置配置参数。的影响。如果一个实例失败,那么只影响一个实例。其他实例可继续正常运行。在Linux操作系统上以非root用户身份安装时,在安装DB2产品期间将创建单个实例。不能创建其他实例。•每个实例都需要额外的系统资源(虚拟内存和磁盘空间)。•由于要管理其他的实例,因此增加了管理工作量。数据库管理器配置文件系统数据库目录节点目录节点配置文件(db2nodes.cfg)包含调试信息的其他文件可以在同一DB2副本或不同DB2副本中同时运行多个实例。要使用同一DB2副本发出命令之前,将DB2INSTANCE环境变量设置为该实例的名称。要阻止实例访问另一实例的数据库,可在与实例同名的目录下为实例创建数据库文件。有关更多信息,请参阅dftdbpath数据库管理器配置参数。要在具有多个DB2副本的系统中使用实例,要使用选择的特定DB2副本的正确环境数据库DB2数据库是关系数据库。数据库将所有数据存储在彼此相关的表中。在这些表之间建立关系,以便可以共享数据并使重复项最少。关系数据库是被视为一组表并按照关系数据模型操作的数据库。它包含一组用来存储、管理和访问数据的对象。这种对象示例包括表、视图、索引、函数、触发器和程序包。对象可以由系统(系统定义的对象)或用户(用户定义的对象)定义。分布式关系数据库包含一组表和其他对象,它们分布在不同但内部相连的计算机系统互间的通信和合作方式允许给定数据库管理器在另一个计算机系统上执行SQL语句。分区关系数据库是在多个数据库分区中管理其数据的关系数据库。这种将数据分布在多式对大多数SQL语句来说是透明的。但是,某些数据定义语言(DDL)联合数据库是其数据存储在多个数据源(例如,不同的关系数据库)中的关系数据库。这些数据看起来就像都位于单个大型数据库中一样,并且可以通过传统SQL查询来访问。对数据所作的更改可以显式定向至适当的数据源。从上边的描述可知,一个系统可以包括多个DB2副本,每个副本可以包括多个实例,同数据库。分布式和联合数据库则是跨数据库访问的。在我们的主测试环境中,目前只有一个DB2数据库软件,创建了一个实例,实例中创(4)用户和模式(Schema)模式(schema)是用于在数据库中创建的数据库对象的一个高级限定符。它是数据库对象,例如表、视图、索引或触发器的一个集合。它提供了数据库对象的一个逻辑分类。模式是用来组织数据库中对象的一种方式,可以把它理解为目录。所有同一个目录下的那么此目录下的所有对象可以不带模式名访问。CREATESCHEMA语句来创建模式。有关模式的信息保存在连接的数据库的系统目录表中。要创建模式,并且要使另一个用户成为该模式的所有者(可选),您需要DBADM权限。即使您不具有DBADM权限,也仍可以使用您自己的授权标识来创建模式。作为CREATESCHEMA语句的一部分创建的任何对象的定义者是模式所有者。此所有者可以授予和撤销其他用户的模式特权。2、功能与操作CREATECREATESCHEMA[AUTHORIZATION]其中是模式的名称。此名称在目录中已记录的模式内必须唯一,并且不能以SYS开头。如果指定了可选AUTHORIZATION子句,那么将成为模式所有者。如果未指定此子句,那么发出此命令的授权标识将成为模式所有者。在删除模式之前,必须删除该模式中的所有对象或将它们移至另一个模式。DROPDROPSCHEMARESTRICT在以下示例中,删除了模式“joeschma”:DROPDROPSCHEMAjoeschmaRESTRICT注意:模式默认和同名的用户相关联,比如创建了tpch模式,用tpch用户连接,则自动将当前模式设定为tpch,并自动有权在当前模式下创建对象,但如果用不是模式所有者的h有模式下表权限有所不同。以下是一个简单的例子。--sh-3.2$su-tpch[[tpch@redflag11012601~]$db2connecttosampleDatabaseConnectionInformationDatabaseserver=DB2/LINUXX86649.7.1SQLauthorizationID=TPCHLocaldatabasealias=SAMPLE--有创建表的权限[[tpch@redflag11012601~]$db2"createtabletest1(avarchar(10))"DB20000ITheSQLcommandcompletedsuccessfully.[[tpch@redflag11012601~]$db2"insertintotest1values('abc')"DB20000ITheSQLcommandcompletedsuccessfully.[tpch@redflag11012601~]$db2"commit"DB20000ITheSQLcommandcompletedsuccessfully.[tpch@redflag11012601~]$db2-t(c)CopyrightIBMCorporation1993,2007CommandLineProcessorforDB2Client9.7.1--不指定模式dbdb2=>select*fromtest1;Abc1record(s)selected.--指定模式dbdb2=>select*fromtpch.test1;Abc1record(s)selected.dbdb2=>selectcount(*)fromtpch.nation;SQL0551N"TPCH"doesnothavetherequiredauthorizationorprivilegetoperformoperation"SELECT"onobject"TPCH.NATION".SQLSTATE=42501dbdb2=>connecttosampleuserdb2inst1usingdb2;DatabaseConnectionInformationDatabaseserver=DB2/LINUXX86649.7.1SQLauthorizationID=DB2INST1Localdatabasealias=SAMPLEdbdb2=>grantallontpch.nationtotpch;DB20000ITheSQLcommandcompletedsuccessfully.dbdb2=>connecttosampleusertpchusingtpch;dbdb2=>selectcount(*)fromtpch.nation;11record(s)selected.dbdb2=>connecttosampleuserdb2inst1usingdb2;dbdb2=>createtabletpch.test2(avarchar(10));DB20000ITheSQLcommandcompletedsuccessfully.dbdb2=>insertintotpch.test2values('cde');DB20000ITheSQLcommandcompletedsuccessfully.dbdb2=>commit;DB20000ITheSQLcommandcompletedsuccessfully.dbdb2=>connecttosampleusertpchusingtpch;dbdb2=>selectcount(*)fromtpch.test2;SQL0551N"TPCH"doesnothavetherequiredauthorizationorprivilegetoperformoperation"SELECT"onobject"TPCH.TEST2".SQLSTATE=42501dbdb2=>connecttosampleuserdb2inst1usingdb2;dbdb2=>grantdbadmondatabasetotpch;DB20000ITheSQLcommandcompletedsuccessfully.dbdb2=>connecttosampleusertpchusingtpch;dbdb2=>selectcount(*)fromtpch.test2;111record(s)selected.(2)对实例和数据库的操作开始连接实例之前,必须存在多个实例。来与实例连接,输入:db2attachto例如,要连接至节点目录中先前编目的称为testdb2的实例:db2attachtotestdb2例如,在对testdb2实例执行维护活动后,要使用命令行从实例拆离,输入:db2detach对于数据库的操作,除了前面提到过的createdatabase和connectto,还有dropCLP通过前面的描述,大家对于它已经很熟悉了。它包括单行命令方式和交互方式。在2种方式之间可以共享当前状态,比如db2connect连接了数据库,那么db2进入交互方式后不用再次connect,同样在交互方式下设置了setschema当前模式,那么退出交互以后仍然利用db2工具除了能够执行SQL语句,还可以完成数据库管理参数和数据库参数的动态配置,前者是实例级,后者是数据库级的。方法是:db2updatedbmcfgusing参数名参数值和db2updatedbcfgusing参数名参数值比如可以设置分区内并行和增加日志文件的大小。--设置启用分区内并行功能shsh-3.2$db2UPDATEDBMCFGUSINGINTRA_PARALLELYESDB20000ITheUPDATEDATABASEMANAGERCONFIGURATIONcommandcompletedsuccessfully.-sh-3.2$db2UPDATEDBMCFGUSINGMAX_QUERYDEGREE32DB20000ITheUPDATEDATABASEMANAGERCONFIGURATIONcommandcompletesuccessfully.--sh-3.2$db2getdbmcfg|grepPARALLELEnableintra-partitionparallelism(INTRA_PARALLEL)=YES--sh-3.2$db2getdbmcfg|grepDEGREEMaximumquerydegreeofparallelism(MAX_QUERYDEGREE)=32--sh-3.2$db2getdbcfg|grepDEGREEDegreeofparallelism(DFT_DEGREE)=1--sh-3.2$db2updatedbcfgusingDFT_DEGREE4DB20000ITheUPDATEDATABASECONFIGURATIONcommandcompletedsuccessfully.--设置日志文件大小--sh-3.2$db2updatedbcfgusingLOGFILSIZ2000DB20000ITheUPDATEDATABASECONFIGURATIONcommandcompletedsuccessfully.SQL1363WOneormoreoftheparameterssubmittedforimmediatemodificationwerenotchangeddynamically.Fortheseconfigurationparameters,allapplicationsmustdisconnectfromthisdatabasebeforethechangesbecomeeffective.--sh-3.2$db2getdbcfg|grepLOGFILSIZLogfilesize(4KB)(LOGFILSIZ)=2000atch这个是db2提供的专门用于基准测试的工具,基准测试是从各种不同方面(例如数据库响应时间、cpu和内存使用情况)对应用程序进行评测的一个过程。基准测试基于一个可重db2batch以一组SQL和/或XQuery语句作为输入,动态地准备语句和描述语句,依从准备到查询完成中各个阶段所花费的具体时间,CPU时间,以及返回的记录关于内存使用情况(例如缓冲池)的数据库管理器快照和缓存信息。dbdb2batch命令格式dbdb2batch-d-a/-i-f-r对于执行db2batch时一些详细的设置可以通过-o参数指定,也可以在SQL文件中指定,譬如可以在1.sql文件中使用下面的配置参数:--#SETROWS_FETCH-1ROWS_OUT5PERF_DETAIL1DELIMITER@TIMESTAMPselect*fromemployeewhereempno='000340'@--#COMMENTQuery2--#BGBLK[重复次数](定义查询块的开始)select*fromemployeewhereempno='000350'@--#EOBLK(定义查询块的结束)其中ROWS_FETCH和ROWS_OUT定义了从查询的结果集中读取记录数和打印到输TER查询间的间隔符。如果用--#BGBLK和--#EOBLK定义执行块,那么最后的总结报告用块为dbdb2batch-dsample-icomplete-f1.sql-r1.out这个功能对于基准测试很有用,可以得出多次执行的平均值,消除一部分偶然性的影响。datedbdate行前后的这个工具将指定语句的执行计划输出到终端屏幕或一个文件。下面举例说明db2expln[db2inst1@aix:/home/db2inst1]#>db2expln-dtpch-q"selectcount(*)cntfromtpch.partwherep_size=30"-g-tIBMDB2UniversalDatabaseSQLandXQUERYExplainTool********************DYNAMIC***************************************====================STATEMENT==========================================IsolationLevel=CursorStabilityBlocking=BlockUnambiguousCursorsQueryOptimizationClass=5PartitionParallel=No--分区间并行未开启Intra-PartitionParallel=No--分区内并行未开启SQLPath="SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","DB2INST1"Statement:selectcount(*)cntfromtpch.partwherep_size=30SectionCodePage=1208EstimatedCost=11047.642578--估计的成本EstimatedCardinality=1.000000--估计的基数AccessTableName=TPCH.PARTID=4,9Columns0InsertedRows|AvoidLockingCommittedData|CurrentlyCommittedforCursorStability|MayparticipateinScanSharingstructures|Scanmaystartanywhereandwrap,forcompletion|Fastscan,forpurposesofscansharingmanagement|ScancanbethrottledinscansharingmanagementefetchEligiblewNextKeyShareSargablePredicate(s)||#Predicates=1||PredicateAggregation|||ColumnFunction(s)AggregationCompletionColumnFunction(s)ReturnDatatoApplication|#Columns=1EndofsectionOptimizerPlan:Operatorst1RN(1)|1GRPBY|.7TBSCAN|2.00041e+06TPCH这是为了熟悉Oracle的用户向db2迁移而设计的功能,号称可以做到百分之几十的代码不需要修改就能在db2中运行原来的Oracle应用,但实际效果还是要亲自使用才知道。设置步骤首先要用db2set命令在注册变量中设定兼容模式,然后重新启动实例,再发出createt--sh-3.2$db2setdb2_compatibility_vector=ora--sh-3.2$db2stopforce2011-05-0616:23:5100SQL1064NDB2STOPprocessingwassuccessful.SQL1064NDB2STOPprocessingwassuccessful.--sh-3.2$db2start05/06/201116:24:1300SQL1063NDB2STARTprocessingwassuccessful.SQL1063NDB2STARTprocessingwassuccessful.--sh-3.2$db2"createdatabaseoraclepagesize32K"SQL1047NTheapplicationisalreadyconnectedtoanotherdatabase.--sh-3.2$db2terminateDB20000ITheTERMINATEcommandcompletedsuccessfully.--sh-3.2$db2"createdatabaseoraclepagesize32K"SQL0204N"SYSTEM_1392_CN"isanundefinedname.SQLSTATE=42704-sh-3.2$db2"withtas(select1afromdualunionallselect0fromdual)selectcast(sys_connect_by_path(a,'/')asvarchar(30))fromtconnectbypriora=a-1"1/0/0/1/13record(s)selected.--sh-3.2$db2"selectlevellfromdualconnectbylevel<=3"LSQL20451NCycledetectedinahierarchicalquery.SQLSTATE=560CO--sh-3.2$db2"selectrownumlfromdualconnectbyrownum<=3"SQL0120NInvaliduseofanaggregatefunctionorOLAPfunction.LSTATE--创建数据库后设置兼容模式[[db2inst1@aix:/home/db2inst1]#>db2setdb2_compatibility_vector=ora[[db2inst1@aix:/home/db2inst1]#>db2setDB2_COMPATIBILITY_VECTOR=ORADB2COMM=TCPIPSQL1025NThedatabasemanagerwasnotstoppedbecausedatabasesarestillactive.[[db2inst1@aix:/home/db2inst1]#>db2stopforce05/10/201116:00:4900SQL1064NDB2STOPprocessingwassuccessful.SQL1064NDB2STOPprocessingwassuccessful.[[db2inst1@aix:/home/db2inst1]#>db2start05/10/201116:00:5800SQL1063NDB2STARTprocessingwassuccessful.SQL1063NDB2STARTprocessingwassuccessful.[[db2inst1@aix:/home/db2inst1]#>clpplus-nwdb2inst1/db2@localhost:60000/tcphCLPPlus:Version1.4Copyright(c)2009,2011,IBMCORPORATION.Allrightsreserved.SQL>settimion--sysdate函数可以使用SQL>selectsysdatefromdual;12011-05-1016:01:27Elapsedtime:59millisecond(s)--dict表不存在SQL>descdictDB250211E:Thedatabaseobjectnamed'DICT'wasnotfoundinthedatabase.SQL>exit--删除数据库并重建[[db2inst1@aix:/home/db2inst1]#>db2dropdatabasetcphDB20000ITheDROPDATABASEcommandcompletedsuccessfully.[[db2inst1@aix:/home/db2inst1]#>db2terminateDB20000ITheTERMINATEcommandcompletedsuccessfully.[db2inst1@aix:/home/db2inst1]#>db2"createdatabasetpchusingCODESETUTF-8TERRiTORYCNpagesize32K"DB20000ITheCREATEDATABASEcommandc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论