《HBase分布式数据库实战》实训手册_第1页
《HBase分布式数据库实战》实训手册_第2页
《HBase分布式数据库实战》实训手册_第3页
《HBase分布式数据库实战》实训手册_第4页
《HBase分布式数据库实战》实训手册_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

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

文档简介

《HBase分布式数据库实战》实训手册目录TOC\o"1-3"\h\u基础篇实训 1项目一安装HBase 1实验单元1: HBase安装部署 11.1 实训说明 11.1.1 实训目的 11.1.2 背景知识 11.1.3 实习时长 11.2 实训环境 11.3 实训内容 11.3.1 下载、配置Hadoop 21.3.2 HBase单机模式安装 111.3.3 HBase伪分布模式安装 141.3.4 HBase完全分布式模式安装 161.4 总结与思考 181.4.1 实训总结 181.4.2 常见问题 191.4.3 思考题 19实验单元2: HBaseWebUI 192.1 实训说明 192.1.1 实训目的 192.1.2 背景知识 192.1.3 实习时长 192.2 实训环境 192.3 实训内容 202.4 总结与思考 262.4.1 实训总结 262.4.2 常见问题 262.4.3 思考题 26实践篇实训 1项目二熟悉HBaseShell 1实验单元1: 熟悉基本的HBaseShell操作 11.1 实训说明 11.1.1 实训目的 11.1.2 背景知识 11.1.3 实习时长 11.2 实训环境 11.3 实训内容 21.3.1 HBaseShell操作 21.3.2 Help命令 21.3.3 General命令 21.3.4 DDL命令 31.3.5 namespace命令 141.3.6 DML命令 161.4 总结与思考 401.4.1 实训总结 401.4.2 常见问题 401.4.3 思考题 41项目三HBaseAPI开发 1实验单元1: HBase常用API 11.1 实训说明 11.1.1 实训目的 11.1.2 背景知识 11.1.3 实习时长 11.2 实训环境 11.3 实训内容 21.3.1 编程环境搭建 21.3.2 编写程序 71.4 总结与思考 141.4.1 实训总结 141.4.2 常见问题 141.4.3 思考题 15实验单元2: 使用HBase协处理器 152.1 实训说明 152.1.1 实训目的 152.1.2 背景知识 152.1.3 实习时长 152.2 实训环境 152.3 实训内容 162.3.1 协处理的加载方式 162.3.2 编程实现步骤 192.4 总结与思考 232.4.1 实训总结 232.4.2 常见问题 232.4.3 思考题 24项目四HBase数据的导入、导出 1实验单元1: Sqoop的安装配置 11.1 实训说明 11.1.1 实训目的 11.1.2 背景知识 11.1.3 实习时长 11.2 实训环境 11.3 实训内容 21.3.1 Sqoop安装 21.4 总结与思考 41.4.1 实训总结 41.4.2 常见问题 51.4.3 思考题 5实验单元2: Sqoop基本命令 52.1 实训说明 52.1.1 实训目的 52.1.2 背景知识 52.1.3 实习时长 52.2 实训环境 52.3 实训内容 62.3.1 Sqoop基本命令 62.4 总结与思考 252.4.1 实训总结 252.4.2 常见问题 252.4.3 思考题 26拓展篇实训 1项目五基于HBase的微博案例 1实验单元1: 基于HBase的微博案例1 11.1 实训说明 11.1.1 实训目的 11.1.2 背景知识 11.1.3 实习时长 11.2 实训环境 11.3 实训内容 21.3.1 需求分析 21.3.2 代码设计 21.3.3 数据表设计 21.3.4 项目架构 41.3.5 定义常量 41.3.6 HBaseUtil封装 51.4 总结与思考 81.4.1 实训总结 81.4.2 常见问题 81.4.3 思考题 8实验单元2: 基于HBase的微博案例2 82.1 实训说明 82.1.1 实训目的 82.1.2 背景知识 92.1.3 实习时长 92.2 实训环境 92.3 实训内容 92.3.1 需求分析 92.3.2 代码设计 102.3.3 HBaseDao封装 102.3.4 测试代码 232.4 总结与思考 262.4.1 实训总结 262.4.2 常见问题 272.4.3 思考题 27基础篇实训项目一安装HBaseHBase安装部署实训说明实训目的回顾Hadoop的安装、配置方法。掌握HBase的安装、配置方法。背景知识掌握vmware的基本操作知识。掌握Linux系统的基本命令行操作。掌握Hadoop基础安装知识。实习时长4个学时实训环境物理环境操作系统win10X64虚拟化工具vmwareworkstation15pro操作环境操作系统CentOS7安装ISOCentOS-7-x86_64-DVD-1708Hadoop版本Hadoop-2.7.1HBase版本HBase-1.4.13实训内容本实训针对个人PC设置,请勿在实训平台上修改相关文件,导致系统意外出错。下载、配置HadoopHadoop的官网:/。进入官网后,拖动到页面最下,点击已发行版本(如图1-1-1所示),选择2.7.1版本(如图1-1-2所示),下载压缩包文件(如图1-1-3所示)。下载完导入到root目录。图1-1-SEQ图3-1-\*ARABIC1下载hadoop图1-1-SEQ图3-1-\*ARABIC2选择版本图1-1-SEQ图3-1-\*ARABIC3下载压缩包文件准备工作第一步:将下载的hadoop2.7.1用XFTP工具导入到该usr/local目录中,并解压,将压缩包删除。[root@localhostlocal]#lsbinetcgameshadoop-2.7.1.tar.gzincludeliblib64libexecsbinsharesrc[root@localhostlocal]#tar-zxvfhadoop-2.7.1.tar.gz#解压出大量的包[root@localhostlocal]#rm–rfhadoop-2.7.1.tar.gz[root@localhostlocal]#mvhadoop-2.7.1hadoop#将hadoop-2.7.1名字改成hadoop[root@localhostlocal]#lsbinetcgameshadoop-2.7.1includeliblib64libexecsbinsharesrc第二步:验证hadoop是否可用。[root@localhost~]#cd/usr/local/hadoop[root@localhosthadoop]#lsbinetcincludeliblibexecLICENSE.txtNOTICE.txtREADME.txtsbinshare[root@localhosthadoop]#bin/hadoopversion#查看Hadoop版本信息Hadoop2.7.1Subversion/repos/asf/hadoop.git-r15ecc87ccf4a0228f35af08fc56de536e6ce657aCompiledbyjenkinson2015-06-29T06:04ZCompiledwithprotoc2.5.0Fromsourcewithchecksumfc0a1a23fc1868e4d5ee7fa2b28a58aThiscommandwasrunusing/usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.1.jar修改配置文件需要配置相关文件,才能够让Hadoop在伪分布式模式下顺利运行。Hadoop配置文件位于/usr/local/hadoop/hadoop/etc/hadoop中,进行伪分布式模式配置时,需要修改3个配置文件,即hadoop-env.sh、core-site.xml和hdfs-site.xml。可以在上面目录中找到这3个文件,首先是hadoop-env.sh,我们需要配置其中的的JAVA_HOME路径,将/usr/local/hadoop/etc/hadoop中的hadoop-env.sh中的JAVA_HOME修改为:当前节点JAVA_HOME绝对路径,不使用${JAVA_HOME}[root@localhost~]#cd/usr/local/hadoop/hadoop/etc/hadoop[root@localhost~]#vihadoop-env.shexportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-92.b10-1.el7_9.x86_64/jre第二个是core-site.xml,修改完以后的内容如下:<configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop/tmp</value><description>Abaseforothertemporarydirectories.</description></property><property><name>fs.defaultFS</name><value>hdfs://31:9000</value></property></configuration>上面文件内容中,hadoop.tmp.dir用户保存临时文件,若不配置,则默认使用的是临时目录/tmp,而这个目录在Hadoop重启时有可能被系统清理掉,导致一些意想不到的问题,因此,必须配置。fs.defaultFS这个参数,用于指定HDFS(我们后面会做相关实验)的访问地址,其中,9000是端口号。同样,下一步需要修改配置文件hdfs-site.xml,它的模板如下:<configuration><!--指定hdfs保存数据的副本数量--><property><name>dfs.replication</name><value>2</value></property><!--指定hdfs中namenode的存储位置--><property><name>.dir</name><value>file:/usr/hadoop/hadoop-2.7.1/tmp/dfs/name</value></property><!--指定hdfs中datanode的存储位置--><property><name>dfs.datanode.data.dir</name><value>file:/usr/hadoop/hadoop-2.7.1/tmp/dfs/data</value></property></configuration>修改完后的内容如下:<configuration><property><name>dfs.replication</name><value>1</value></property><property><name>.dir</name><value>file:/usr/local/hadoop/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/tmp/dfs/data</value></property></configuration>dfs.replication用于指定副本的数量,因此,在分布式文件系统HDFS中,数据会被冗余存储多份,以保证可靠性和可用性。由于这里采用的是伪分布式,只有一个节点,所以只可能有1个副本。.dir用于设定名称节点的元数据的保存目录,dfs.datanode.data.dir用于设定数据节点的数据保存目录,这两个参数必须设定,否则后面会出错。Hadoop的运行方式(如运行在单机模式下还是运行在伪分布式模式下)是由配置文件决定的,启动Hadoop时会读取配置文件,然后根据配置文件来决定运行在什么模式下。因此,如果需要从伪分布式模式切换回单机模式,只需要删除core-site.xml中的配置项即可。执行名称节点格式化修改配置文件以后,要执行名称节点的格式化,命令如下:[root@localhosthadoop]#pwd/usr/local/hadoop/hadoop[root@localhosthadoop]#bin/hdfsnamenode–format……..[省略几十行内容]………18/08/1702:34:52INFOcommon.Storage:Storagedirectory/usr/local/hadoop/tmp/dfs/namehasbeensuccessfullyformatted.18/08/1702:34:52INFOnamenode.NNStorageRetentionManager:Goingtoretain1imageswithtxid>=018/08/1702:34:52INFOutil.ExitUtil:Exitingwithstatus018/08/1702:34:52INFOnamenode.NameNode:SHUTDOWN_MSG:/************************************************************SHUTDOWN_MSG:ShuttingdownNameNodeatlocalhost/23************************************************************/………如果格式化成功,会看到上面框框中的hasbeensuccessfullyformattedh和Exitingwithstatus0的提示,其中后面的0表示正确,1表示错误。如果在执行这一步时提示错误信息“Error:JAVA_HOMEisnotsetandcouldnotbefound”,则说明之前设置JAVA_HOME环境变量时,没有设置成功,要按前面的内容先设置好。启动Hadoop执行以下命令启动启动Hadoop。[root@localhosthadoop]#./sbin/start-dfs.sh[root@localhosthadoop]#sbin/start-dfs.shStartingnamenodeson[localhost]root@localhost'spassword:localhost:namenoderunningasprocess25621.Stopitfirst.root@localhost'spassword:localhost:datanoderunningasprocess25740.Stopitfirst.Startingsecondarynamenodes[]root@'spassword::secondarynamenoderunningasprocess25895.Stopitfirst.或者可能是下面的信息:Startingnamenodeson[localhost]ERROR:AttemptingtooperateonhdfsnamenodeasrootERROR:butthereisnoHDFS_NAMENODE_USERdefined.Abortingoperation.StartingdatanodesERROR:AttemptingtooperateonhdfsdatanodeasrootERROR:butthereisnoHDFS_DATANODE_USERdefined.Abortingoperation.Startingsecondarynamenodes[localhost]ERROR:AttemptingtooperateonhdfssecondarynamenodeasrootERROR:butthereisnoHDFS_SECONDARYNAMENODE_USERdefined.Abortingoperation.第一种“stopitfirst”,可以输入sbin/stop-dfs.sh后再重新启动就可以,但每次输入密码比较麻烦,我们在后面会设置ssh的免密登录。第二种情况会发现很多报错。发现是缺少用户定义而造成的。因此编辑启动和关闭命令,增加下面内容后再次运行。$visbin/start-dfs.sh$visbin/stop-dfs.sh顶部空白处HDFS_DATANODE_USER=rootHDFS_DATANODE_SECURE_USER=hdfsHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=root如果是出现下列错误,需要考虑是权限问题。[root@localhosthadoop]#./sbin/start-dfs.shStartingnamenodeson[localhost]Lastlogin:WedAug1502:24:51CST2018onpts/0localhost:Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password).StartingdatanodesLastlogin:WedAug1502:33:16CST2018onpts/0localhost:Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password).Startingsecondarynamenodes[localhost]Lastlogin:WedAug1502:33:16CST2018onpts/0localhost:Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password).那么可以要求本机用户免密登录自己机器,下面我们来设置。[root@localhost~]#ssh-keygen#默认回车三次,生成authorized_keys文件[root@localhost~]#cd.ssh#进入隐藏文件夹ssh[root@localhost.ssh]#ssh-copy-id20#将得到秘钥传送给本机[root@localhost.ssh]#lltotal16-rw.1rootroot390Aug1509:53authorized_keys-rw.1rootroot1675Aug1509:30id_rsa-rw-r--r--.1rootroot390Aug1509:30id_rsa.pub-rw-r--r--.1rootroot889Aug1509:53known_hosts[root@localhost.ssh]#ssh31#尝试直接登录本机,发现不需要秘钥了。Lastlogin:WedAug1509:54:242018[root@localhost~]#再继续执行之前出错的命令。[root@localhost~]#cd/usr/local/hadoop/[root@localhosthadoop]#sbin/start-dfs.shStartingnamenodeson[localhost]Lastlogin:WedAug1510:04:34CST2018fromlocalhostonpts/3localhost:ERROR:JAVA_HOMEisnotsetandcouldnotbefound.StartingdatanodesLastlogin:WedAug1510:06:20CST2018onpts/3localhost:ERROR:JAVA_HOMEisnotsetandcouldnotbefound.Startingsecondarynamenodes[localhost]Lastlogin:WedAug1510:06:21CST2018onpts/3localhost:ERROR:JAVA_HOMEisnotsetandcouldnotbefound.如果发现设置的JAVA_HOME不见了。可以修改~/.bashrc。[root@localhosthadoop]#vi~/.bashrc增加以下内容[怎么找路径前面实验已经讲过]exportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-81-3.b13.el7_5.x86_64/jre[root@localhosthadoop]#source~/.bashrc#让其生效[root@localhosthadoop]#echo$JAVA_HOME#验证以下/usr/lib/jvm/java-1.8.0-openjdk-81-3.b13.el7_5.x86_64/jre[root@localhosthadoop]#sbin/start-dfs.sh#再次执行,发现没有报错Startingnamenodeson[localhost]Lastlogin:WedAug1510:06:27CST2018onpts/3StartingdatanodesLastlogin:WedAug1510:10:42CST2018onpts/3Startingsecondarynamenodes[localhost]Lastlogin:WedAug1510:10:45CST2018onpts/3若成功启动,则会显示以下三个进程:namenodes、datanodes、secondarynamenodes。如果找不到secondarynamenodes,运行sbin/stop-dfs.sh关闭Hadoop相关进程,然后再次尝试启动。如果看不到namenodes、datanodes,则表示配置不成功,请在仔细检查。最后,我们也可以通过java中的jps命令来查看进程。[root@localhosthadoop]#find/-namejps#发现jps没有安装[root@localhosthadoop]#rpm-qa|grep-ijdkjava-1.8.0-openjdk-headless-81-3.b13.el7_5.x86_64copy-jdk-configs-3.3-10.el7_5.noarchjava-1.8.0-openjdk-81-3.b13.el7_5.x86_64[root@localhosthadoop]#yuminstalljava-1.8.0-openjdk-devel.x86_64#开始安装包…………[安装过程省略][root@localhost~]#whichjps/usr/bin/jps[root@localhost~]#whereisjpsjps:/usr/bin/jps/usr/share/man/man1/jps.1.gz[root@localhost~]#jps12836DataNode15463Jps12716NameNode13006SecondaryNameNode通过start-dfs.sh命令启动Hadoop后,就可以运行MapReduce程序处理数据。使用Web界面查看HDFS信息上面我们已经成功启动了Hadoop,Hadoop:50070是hdfs的web管理页面,我们可以用netstat–luntp命令查看端口状态。[root@localhosthadoop]#netstat-lntupActiveInternetconnections(onlyservers)ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programnametcp00:50070:*LISTEN28261/javatcp00:22:*LISTEN2643/sshdtcp00:25:*LISTEN1117/mastertcp00:50010:*LISTEN28354/javatcp00:50075:*LISTEN28354/javatcp00:44797:*LISTEN28354/javatcp00:50020:*LISTEN28354/javatcp00:9000:*LISTEN28261/javatcp00:50090:*LISTEN28545/javatcp600:::22:::*LISTEN2643/sshdtcp600::1:25:::*LISTEN1117/masterudp00:8108:*837/dhclientudp00:68:*837/dhclientudp600:::21290:::*837/dhclient正常情况50070应该会出现,但有时候高版本的hadoop会没有该端口,则需要在hdfs-site.xml文件中手动写入,这里我们不做详细介绍。最后可以在windows电脑的浏览器中,输入http://ip:50070来查看hdfs的web管理界面,其中ip值的是你的虚拟机的ip地址。注意:若信息访问不全,请多尝试几个浏览器。正确界面(如图1-1-4所示)。图1-1-SEQ图3-1-\*ARABIC4HDFS的web管理界面HBase单机模式安装下载HBase首先找到适合的版本,在网址/book.html#basic.prerequisites中,我们可以查询Hadoop2.7.1版本适合的HBase版本,如图1-1-5所示,我们选择HBase-1.4.x版本。图1-1-SEQ图3-1-\*ARABIC5查询适合版本的HBase版本从HBase的官网下载HBase安装包,网址/apache/hbase/。图1-1-SEQ图3-1-\*ARABIC6HBase下载地址选择1.4.13版本,下载hbase-1.4.13-bin.tar.gz,下载完成后使用FTP工具上传到Linux环境/usr/local/hbas文件夹下,解压安装包,命令如下。[root@localhostlocal]#tar-zxvfhbase-1.4.13-bin.tar.gz执行操作后,发现local文件夹下多出一个名为hbase-1.4.13的文件夹。修改conf/env.sh进入hbase-1.4.13文件夹。[root@localhostlocal]#cdhbase-1.4.13/conf/[root@localhostconf]#vihbase-env.sh首先是修改JAVA_HOME的属性,大概在文件的29行位置,需要把该行的注释去掉,并添加本地JAVA的安装位置。#Thejavaimplementationtouse.Java1.7+required.exportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-92.b10-1.el7_9.x86_64/jre然后找到HBASE_MANAGES_ZK配置,这个配置表示是否使用HBase管理其自带的ZooKeeper,true表示使用自带ZooKeeper,大概在文件的124行的位置,同样取消注释,将属性的值改为true即可。#TellHBasewhetheritshouldmanageit'sowninstanceofZookeeperornot.exportHBASE_MANAGES_ZK=true修改hbase-site.xml[root@localhostconf]#vihbase-site.xml这是HBase的主要配置文件,在单节点模式中,只需要配置HBase和ZooKeeper的文件存储位置即可。在默认情况下,文件存储位置为/tmp/hbase-${},但是由于操作系统会在重启时清理/tmp目录下的数据,所以需要把目录设置为其他位置。hbase-site.xml和Hadoop的配置文件一样,初始是没有配置项的,需要在<configuration>标签之后添加配置信息,具体内容如下:<configuration><property><name>hbase.rootdir</name><value>file:///usr/local/hbase-1.4.13/hbase-tmp</value></property><property><name>perty.dataDir</name><value>/usr/local/hbase-1.4.13/zookeeper-tmp</value></property></configuration>注意不要创建上面配置的文件,HBase启动后会自动创建;如果创建了,HBase为了保证数据的一致性反而要做迁移操作,这并不是人们想要的。查看Hadoop版本接下来查看当前HBase所基于的Hadoop版本,并做版本适配。[root@localhosthbase-1.4.13]#lslib|grep'^hadoop-'输入如下:hadoop-annotations-2.7.4.jarhadoop-auth-2.7.4.jarhadoop-client-2.7.4.jarhadoop-common-2.7.4.jarhadoop-hdfs-2.7.4.jarhadoop-mapreduce-client-app-2.7.4.jarhadoop-mapreduce-client-common-2.7.4.jarhadoop-mapreduce-client-core-2.7.4.jarhadoop-mapreduce-client-jobclient-2.7.4.jarhadoop-mapreduce-client-shuffle-2.7.4.jarhadoop-yarn-api-2.7.4.jarhadoop-yarn-client-2.7.4.jarhadoop-yarn-common-2.7.4.jarhadoop-yarn-server-common-2.7.4.jarhadoop-yarn-server-nodemanager-2.7.4.jar可以看到相关文件Hadoop的版本均为2.7.4,与我们安装的Hadoop版本不一致,因此需要复制Hadoop中相应的jar包到HBase的lib文件夹下,如果版本一致,则不需要将上面对应的文件从hadoop安装文件夹中复制到HBase的lib文件夹下。启动HBase最后启动HBase[root@localhosthbase-1.4.13]#bin/start-hbase.sh输入上述命令,如果没有意外的话,会有相应的输出日志显示HBase启动成功,可以通过输入jps命令查看是否有相应的HMaster进程。在单节点模式中,HBase的所有服务均运行在一个JVM中,包括HMaster、一个HRegionServer和ZooKeeper服务,所有只会看到一个HMaster。HBase伪分布模式安装HBase的伪分布式运行也是在单节点上运行所有服务,分别是HMaster、HRegionServer和ZooKeeper,和单节点模式不同的是,它们均运行在单独的进程中,HMaster和ZooKeeper在同一个JVM中。在经过单节点的配置过程之后,相信大家对HBase的配置有了一定的了解,现在可以直接在前面单节点配置的基础之上做相应修改,使HBase以伪分布式模式运行。在配置伪分布模式前,先确保配置时HBase已停止运行。配置hbase-site.xml[root@localhostconf]#vihbase-site.xml这里主要进行两项设置,一是开启HBase的分布式运行模式,二是设置文件存储位置为HDFS的/hbase目录,修改后的完整配置代码如下:<configuration><property><name>hbase.rootdir</name><value>hdfs://31:9000/hbase</value></property><property><name>perty.dataDir</name><value>/usr/local/hbase-1.4.13/zookeeper-tmp</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property></configuration>注意,hbase.rootdir的指要与Hadoop的配置文件core-site.xml中的fs.defaultFS的值对应,否则HBase将无法访问HDFS。和前面一样,配置的存储目录不需要用户建立,HBase启动时会自动建立相应文件夹。启动HBase[root@localhosthbase-1.4.13]#bin/start-hbase.sh如果启动正常的话,HBase会在HDFS中建立文件,在上述配置中,设置的文件位置为/hbase,我们可以在HDFS的web界面查看,如图1-1-7所示。图1-1-SEQ图3-1-\*ARABIC7HDFS中的hbase文件夹HBase完全分布式模式安装在完全分布式模式中,一个集群含有多个节点,每个节点都将运行一个或多个HBase服务,在本实验中将在3个节点的Hadoop集群中配置HBase,具体情况如表所示。主机名用户名MasterZooKeeperRegionServernode1root√√×node2rootbackup√√node3root×√√因为要在一个节点上输入命令启动整个集群,所以需要配置所有节点的SSH免密码验证,这项在配置Hadoop时一般会预先配置,这里不再多说。集群的配置步骤基于前面的配置进行,如果要完全重新配置,请参照单机节点的配置模式先做相应的配置,再在此基础之上再进行如下配置。配置node1的hbase-site.xml[root@node1conf]#vihbase-site.xml修改为如下的内容:<configuration><property><name>hbase.rootdir</name><value>hdfs://31:9000/hbase</value></property><property><name>perty.dataDir</name><value>/usr/local/hbase-1.4.13/zookeeper-tmp</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.zookeeper.quorum</name><value>node1,node2,node3</value></property></configuration>对比伪分布式模式的配置,这里主要是增加了一个属性hbase.zookeeper.quorum,该属性的值会让HBase启动时在相应节点上运行ZooKeeper实例。在node1上配置slave节点列表[root@node1conf]#viregionservers删掉默认的localhost,并且添加想运行RegionServer的节点名,一个节点一行,如下:node2node3删掉localhost的原因是并不想在Hadoop的namenode上运行RegionServer,因为namenode上并不存储HDFS数据,运行RegionServer需要远程调用数据,同时也会加重namenode的负担。如果一定要在namenode上运行RegionServer,也应该把localhost换成相应的节点名,如node1,因为HBase也可以通过在其他节点上运行start-hbase.sh脚本启动(这时会把输入命令的节点作为Master节点),这时localhost指的是本机节点而不是namenode。设置node2为运行HMaster的备用节点。[root@node1conf]#vibackup-masters注意该文件并不存在,使用上述命令设置保存后会生成该文件。这里直接添加一行填上对应的主机名即可,本文为node2。从node1复制HBase文件到其他节点命令如下:[root@node1hbase-1.4.13]#cd..[root@node1local]#scp-r./hbase-1.4.13node2:~/[root@node1local]#scp-r./hbase-1.4.13node3:~/在node1上启动HBase[root@node1local]#hbase-1.4.13/bin/start-hbase.sh如果没有问题,在各个节点下执行jps命令,查看服务是否都启动正常。参考运行情况如下:[root@node1local]#jps7963HQuorumPeer6812NameNode7116SecondaryNameNode9885Jps7278ResourceManager8031HMaster[root@node2local]#jps4894HQuorumPeer4456NodeManager5615HRegionServer5969HMaster4849Jps4894DataNode[root@node3local]#jps8949HQuorumPeer4894HRegionServer6266Jps4959NodeManager9486DataNode上面的HQuorumPeer进程为ZooKeeper的实例,它由HBase控制和启动,以这种方式运行的ZooKeeper将被限制为一个节点运行一个服务进程;如果ZooKeeper是单独配置启动的,它的运行进程名为QuorumPeer,没有前面的H。还可以发现,node2的输出中也有一个HMaster,因为本文将node2设为HMaster运行的备用节点,所以也有相应的服务,当namenode的HMaster出现问题时,将及时由node2的HMaster接管集群。总结与思考实训总结本实验首先回顾了Hadoop平台的安装步骤,接着详细介绍了HBase的三种安装模式,分别是单机模式、伪分布式模式以及完全分布式模式,经过前面Hadoop的安装,相信大家在HBase的安装中不会出现很多问题。常见问题常见问题:启动HBase时,HBMaster自动停止。启动HBase时,出现bindxxx.jarconflict等类似问题解决思路:可能是在hbase-site.xml配置的hbase.rootdir参数中的端口号为9000,而hadoop的hdfs-site.xml中node.rpc-address.sn1.nn1端口参数为8020。hadoop和hbase的jar包冲突了,将hbase/lib中的jar包改名或者删除就好了。思考题1、在已经有一个master的情况下,在一台机器上在启动一个master,那这台机器会成为什么属性的节点?答案:该master为备份节点,备份节点可以启动多个(一般启动两个就够了),形成真正的高可用。HBaseWebUI实训说明实训目的理解HBaseWebUI页面中的各指标的含义。掌握访问HBaseWebUI的方法。背景知识掌握vmware的基本操作知识。掌握Linux系统的基本命令行操作。掌握浏览器的使用方法。实习时长2个学时实训环境物理环境操作系统win10X64虚拟化工具vmwareworkstation15pro操作环境操作系统CentOS7安装ISOCentOS-7-x86_64-DVD-1708Hadoop版本Hadoop-2.7.1HBase版本HBase-1.4.13浏览器GoogleChrome实训内容HBase提供了基于Web的用户接口(UI),通过WebUI可以查集群信息及数据表的服务状态等信息。HBase的Web服务端口可以通过配置hbase-site.xml来修改,可以修改的属性包括:.port(默认16010).port(默认16030)启动HBase后,在浏览器中输入HBaseWeb的访问地址,如:31:16010,即可看到如图1-2-1所示的页面。图1-2-SEQ图3-2-\*ARABIC1HBaseWeb主页图1-2-1展示了HBase集群WebUI的主页,在这个页面中,用户可以查看HBase集群信息、状态、表、region服务器、任务等。下面将根据页面由上到下的顺序介绍各个版块的信息。RegionServers图1-2-SEQ图3-2-\*ARABIC2RegionServers版块如图1-2-2所示,在这个版块中,显示了master能联系的所有region服务器,点击该服务器的ServerName能够显示该服务器更详细的信息,如图1-2-3所示,在RegionServer主页中,提供了当前进程的细节信息、任务及加载的region。RequestsPerSecond表示每秒读或写请求次数,可以用来监控HBase请求是否均匀。如果不均匀需排查是否为建表的region划分不合理造成。Num.Regions,每个Regionserver节点上的region个数,观察每个节点的region个数是否均匀,如果不均匀需要确认balance问题。点击Memory、Requests、Storefiles、Compactions选项能显示更多相关信息。图1-2-SEQ图3-2-\*ARABIC3RegionServer主页BackupMasters图1-2-SEQ图3-2-\*ARABIC4BackupMaster版块如图1-2-4所示,在这个版块中,若在配置文件中配置了BackupMaster,即可在这里看到相关信息。Tables图1-2-SEQ图3-2-\*ARABIC5Tables版块如图1-2-5所示,在这个版块中,我们可以查看当前HBase集群的数据表以及这些表的描述。Tables栏分别有UserTables、SystemTables、Snapshots。UserTables记录用户创建表,可以查看到在线、下线、失败的region个数。SplitRegions记录进行自动split次数(重启HMaster后重新从0计算)。点击表的名称后,能看到该表更详细的信息,比如我们点击counters表后,页面如图1-2-6所示,图中只截取了一部分内容。SystemTables记录系统表,安全版本集群有三张系统表:hbase:acl、hbase:meta、hbase:namespace。如果hbase:acl表region未上线会导致manager页面对HBase授权失败,如果hbase:namespace表region未上线会导致创建表失败。Snapshots记录创建的快照信息。图1-2-SEQ图3-2-\*ARABIC6counters表详细信息如图1-2-6所示的页面中,包含了TableAttributes、TableSchema、TableRegions、RegionsbyRegionServer、TableStats版块(图中只显示了一部分),其中:TableAttributes版块显示了表自身的信息,包括表是否启用、表是否被合并。TableSchema版块显示了表中各个列族的详细信息。TableStats版块如图1-2-7所示,在该版块中,可以出发三钟操作,分别是Compact、Split、Merge。图1-2-SEQ图3-2-\*ARABIC7TableStats版块Compact为合并操作,该操作在后台异步进行,执行该命令时设置region名更有选择则性,region名可以从上面的表中找到,即TableRegions版块中的Name的值。,如果没有region名,合并操作会将表中所有的region作为目标。Split可以拆分以单个region或全表为目标。注意并非所有的region都能拆分,比如一些不包含数据或者数据非常少的region,或已经拆分但未执行合并操作的region均不能执行拆分操作。Merge和split相对应,当一个table数据量比较小,但是region数量特别多时,就需要mergeregion。一旦触发其中一个操作,用户会进入一个确认界面,例如执行split命令后会看到:Splitrequestaccepted.GoBack,orwaitfortheredirect.Tasks如图1-2-8所示,该版块一般用来与RIT栏一起确认,如果RIT为空且non-RPC为空则HBase服务启动正常。图1-2-SEQ图3-2-\*ARABIC8Tasks版块SoftwareAttributes在页面最下方的SoftwareAttributes版块显示了集群的粗粒度信息,如图1-2-9所示,包括HBase版本、Hadoop版本、当前HBase集群在HDFS中的根目录、平均负载、Zookeeper连接地址等。图1-2-SEQ图3-2-\*ARABIC9SoftwareAttributes版块点击zkdump链接可以跳转至ZooKeeper存储界面,这个页面会显示所有HBase存储在ZooKeeper中的节点,这对于查看集群状态并解决问题很有帮助,如图1-2-10所示,这个页面展示了使用HBaseShell调用zk_dump操作相同的信息,可以看到HBase在配置文件系统中的根目录、当前的master地址、-ROOT-表地址和所有提供服务的region服务器。图1-2-SEQ图3-2-\*ARABIC10ZooKeeper页面总结与思考实训总结本实验主要讲解HBase的WebUI界面,需要操作的地方较少,主要意义在于让同学们掌握查看HBase各类信息的方法,如果同学们认为在命令行中查看HBase表数据不方便的话,可以使用HBaseWebUI查看。常见问题无思考题无实践篇实训项目二熟悉HBaseShell熟悉基本的HBaseShell操作实训说明实训目的掌握查看Shell帮助命令的方法。重点掌握DDL、DML命令的用法。背景知识掌握vmware的基本操作知识。掌握Linux系统的基本命令行操作。实习时长4个学时实训环境物理环境操作系统win10X64平台谷歌Chrome大数据实训平台:31890/training/#/user/login操作环境操作系统CentOS7/win10X64开发工具Eclipse、sublimetext、MobaXterm(或其他ftp工具)Hadoop版本Hadoop-2.7.1Hive版本Hive-1.2.1HBase版本HBase-1-4-13实训内容HBaseShell操作当安装好HBase后(后文所有操作都基于伪分布模式进行),我们进入HBase的安装路径的bin目录,启动HBaseShell,命令如下。[root@localhostbin]#./hbaseshell出现图2-1-1所示内容,说明启动成功。图2-1-SEQ图4-1-\*ARABIC1HBaseShell成功启动Help命令可以通过help‘命名名称’来查看命令行的具体使用,包括命令的作用和用法。通过help命名来查看hbaseshell支持的所有命令,HBase将命令进行分组,其中ddl、dml使用较多。hbase(main):002:0>help省略显示内容。接下来我们来学习各命令的用法。General命令显示集群状态——status参数有‘summary’、‘simple’、‘detailed’、‘replication’四种,默认为‘summary’,命令如下:hbase(main):002:0>status‘summary’1activemaster,0backupmasters,1servers,0dead,2.0000averageload查询数据库版本——versionversion命令用于查询HBase数据库的版本,命令如下:hbase(main):006:0>version1.4.13,r38bf65a22b7e9320f07aeb27677e4533b9a77ef4,SunFeb2302:06:36PST2020显示当前用户与组——whoamiwhoami命令可以显示当前操作HBase的用户和群组,命令如下:hbase(main):007:0>whoamiroot(auth:SIMPLE)groups:root查看操作表的命令——table_help顾名思义,table_help命令能列出关于操作表的帮助,命令如下:hbase(main):008:0>table_help省略显示结果。退出HBaseShell——exit在shell中输入exit,按下回车,即可退出shell命令行。hbase(main):009:0>exit[root@localhostbin]#DDL命令创建表——create基本语法:create'表名','列族名1','列族名2','列族名3'若想为列族指定更多的属性,如VERSIONS、TTL、BLOCKCACHE、CONFIGURATION等属性,则可以使用如下语法:create'表名',{NAME=>'列族名1'},{NAME=>'列族名2'},{NAME=>'列族名3'}注意:创建表时只需要指定列族名称,不需要指定列名。示例:hbase(main):001:0>create'tbl_user','info','detail'0row(s)in1.5770seconds=>Hbase::Table-tbl_userhbase(main):002:0>create't1',{NAME=>'f1',VERSIONS=>1,TTL=>2592000,BLOCKCACHE=>true}0row(s)in1.2580seconds=>Hbase::Table-t1添加(修改、删除)表结构——schemaalter添加一个列族基本语法:alter'表名','列族名'示例如下:hbase(main):003:0>alter'tbl_user','address'Updatingallregionswiththenewschema...1/1regionsupdated.Done.0row(s)in4.1040seconds删除一个列族基本语法:alter'表名',{NAME=>'列族名',METHOD=>'delete'}示例如下:hbase(main):004:0>alter'tbl_user',{NAME=>'address',METHOD=>'delete'}Updatingallregionswiththenewschema...1/1regionsupdated.Done.0row(s)in2.4120seconds修改列族的属性可以修改列族的VERSIONS、IN_MEMORY等属性示例如下:#修改f1列族的版本为5hbase(main):005:0>alter't1',NAME=>'f1',VERSIONS=>5Updatingallregionswiththenewschema...1/1regionsupdated.Done.0row(s)in1.8870seconds#修改多个列族,修改f2为内存,版本号为5hbase(main):001:0>alter't1','f1',{NAME=>'f2',IN_MEMORY=>true},{NAME=>'f3',VERSIONS=>5}Updatingallregionswiththenewschema...1/1regionsupdated.Done.0row(s)in2.1190seconds#也可以修改table-scope属性,例如MAX_FILESIZE,READONLY,MEMSTORE_FLUSHSIZE,DEFERRED_LOG_FLUSH等。#例如,修改region的最大大小为128MB:alter't1',MAX_FILESIZE=>'134217728'hbase(main):002:0>alter't1',MAX_FILESIZE=>'134217728'Updatingallregionswiththenewschema...1/1regionsupdated.Done.0row(s)in1.8900seconds获取表的描述——describe基本语法:describe'表名'示例如下:hbase(main):003:0>describe'tbl_user'Tabletbl_userisENABLEDtbl_userCOLUMNFAMILIESDESCRIPTION{NAME=>'detail',BLOOMFILTER=>'ROW',VERSIONS=>'1',IN_MEMORY=>'false',KEEP_DELETED_CELLS=>'FALSE',DATA_BLOCK_ENCODING=>'NONE',TTL=>'FOREVER',COMPRESSION=>'NONE',MIN_VERSIONS=>'0',BLOCKCACHE=>'true',BLOCKSIZE=>'65536',REPLICATION_SCOPE=>'0'}{NAME=>'info',BLOOMFILTER=>'ROW',VERSIONS=>'1',IN_MEMORY=>'false',KEEP_DELETED_CELLS=>'FALSE',DATA_BLOCK_ENCODING=>'NONE',TTL=>'FOREVER',COMPRESSION=>'NONE',MIN_VERSIONS=>'0',BLOCKCACHE=>'true',BLOCKSIZE=>'65536',REPLICATION_SCOPE=>'0'}2row(s)in0.0280seconds列举所有表——list基本语法:list示例如下:hbase(main):005:0>listTABLEt1tbl_user2row(s)in0.0110seconds=>["t1","tbl_user"]表是否存在exists基本语法:exists'表名'示例如下:hbase(main):008:0>exists'tbl_user'Tabletbl_userdoesexist0row(s)in0.0120secondshbase(main):001:0>exists'tbl_xxx'Tabletbl_xxxdoesnotexist0row(s)in0.1770seconds启用表——enable,禁用表——disable通过enable和disable来启用/禁用这个表,相应的可以通过is_enabled和is_disabled来检查表是否被禁用。基本语法:enable'表名'is_enabled'表名'disable'表名'is_disabled'表名'示例如下:hbase(main):002:0>disable'tbl_user'0row(s)in2.3190secondshbase(main):003:0>is_disabled'tbl_user'true0row(s)in0.0180secondshbase(main):001:0>enable'tbl_user'0row(s)in1.4950secondshbase(main):002:0>is_enabled'tbl_user'true0row(s)in0.0150seconds禁用满足正则表达式的所有表——disable_all基本语法:.匹配除“\n”和"\r"之外的任何单个字符*匹配前面的子表达式任意次示例如下:#匹配以t开头的表名hbase(main):003:0>disable_all't.*'t1tbl_userDisabletheabove2tables(y/n)?y(如果想要禁用,输入y,反之输入n)2tablessuccessfullydisabled#匹配指定命名空间ns下的以t开头的所有表hbase(main):005:0>disable_all'ns:t.*'Notablesmatchedtheregexns:t.*#匹配ns命名空间下的所有表hbase(main):006:0>disable_all'ns:.*'Notablesmatchedtheregexns:.*启用满足正则表达式的所有表——enable_all基本语法:和上面的禁用一样,.匹配除“\n”和"\r"之外的任何单个字符*匹配前面的子表达式任意次示例如下:#匹配以t开头的表名hbase(main):007:0>enable_all't.*'t1tbl_userEnabletheabove2tables(y/n)?y(如果想要禁用,输入y,反之输入n)2tablessuccessfullyenabled#匹配指定命名空间ns下的以t开头的所有表hbase(main

温馨提示

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

评论

0/150

提交评论