梯子加速器:https://www.svpn.me/
目录1. 实验一:HBase分布式部署................................................................ 1.1. 实验目的......................................................................................
1.2. 实验要求...................................................................................... 1.3. 实验环境......................................................................................
1.4. 实验视图...................................................................................... 1.5. 实验过程......................................................................................
1.5.1. 实验任务一:部署前期准备................................................... 1.5.2. 实验任务二:修改配置文件(master节点).........................
2. 实验二 HBase 库操作与表操作.......................................................... 2.1. 实验内容与目标...........................................................................
2.2. 相关知识...................................................................................... 2.3. 实验环境......................................................................................
2.4. 实验过程...................................................................................... 2.4.1. 实验任务一: HBase 库操作.................................................
2.4.2. 实验任务二:HBase表管理................................................... 3. 实验三 HBase数据操作......................................................................
3.1. 实验内容与目标........................................................................... 3.2. 相关知识......................................................................................
3.3. 实验环境...................................................................................... 3.4. 实验过程......................................................................................
3.4.1. 实验任务一:简单操作.......................................................... 3.4.2. 实验任务二:模糊查询..........................................................
3.4.3. 实验任务三:批量导入/导出................................................. 3.5. 注意事项......................................................................................
1. 实验一:HBase分布式部署1.1. 实验目的完成本实验,您应该能够:l 了解HBase的安装流程l 了解HBase的工作原理l 了解HBase 环境变量配置1.2. 实验要求l 熟悉常用Linux操作系统命令
l 熟悉HBase分布式部署l 熟悉HBase Shell命令操作1.3. 实验环境 本实验所需之主要资源环境如表1-1所示表1-1 资源环境服务器集群3个以上节点,节点间网络互通,各节点最低配置:双核CPU、8GB内存、100G硬盘。
运行环境CentOS 7.4 (1708) gui版本用户名/密码root/password hadoop/password服务和组件HDFS、YARN、MapReduce等,其他服务根据实验需求安装1.4. 实验视图
图1-1 HBase架构图1.5. 实验过程1.5.1. 实验任务一:部署前期准备1.5.1.1. 步骤一:安装部署hadoop ha分布式环境(不用做)本实验采用hadoop 2.7.1部署三台大数据处理平台环境。
如图1-2所示
图1-2 hadoop分布式环境注意:各主机中的操作系统版本需保持一致安装过程中都在root用户下,本教材中密码统一采用:password(注意大小写)1.5.1.2. 步骤二:解压安装文件 [root@master ~]# cd /opt/software/。
[root@master software]# tar -zxvf hbase-1.2.1-bin.tar.gz -C /usr/local/src/ # 解压到统一安装目录[root@master software]# cd
[root@master ~]# mv /usr/local/src/hbase-1.2.1 /usr/local/src/hbase编辑/etc/profile文件[root@master ~]# vi /etc/profile。
[root@slave1 ~]# vi /etc/profile[root@slave2 ~]# vi /etc/profile将以下配置信息添加到/etc/profile文件的末尾# set hbase environment。
export HBASE_HOME=/usr/local/src/hbase # hbase安装目录export PATH=$PATH:$HBASE_HOME/bin # 将hbase的bin目录添加到系统环境变量PATH
master:slave1:slave2:执行source /etc/profile命令,使配置的环境变量在系统全局范围生效[root@master ~]# source /etc/profile[root@slave1 ~]# source /etc/profile。
[root@slave2 ~]# source /etc/profile1.5.2. 实验任务二:修改配置文件(master节点)1.5.2.1. 步骤一:conf下文件修改HBase的配置文件放置在安装目录下的conf文件夹内,切换到该目录首先修改HBase环境配置文件 hbase-env.sh,设置 JAVA_HOME 为自己安装的版本。
将以下配置信息添加到hbase-env.sh的末尾[root@master ~]# cd /usr/local/src/hbase/conf[root@master conf]# vi hbase-env.sh
export JAVA_HOME=/usr/local/src/java export HADOOP_HOME=/usr/local/src/hadoopexport HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HBASE_MANAGES_ZK=false export HBASE_LOG_DIR=${HBASE_HOME}/logsexport HBASE_PID_DIR=${HBASE_HOME}/pid
JAVA_HOME为java程序所在位置,HBASE_MANAGES_ZK表示是否使用HBase自带的zookeeper环境,由于hadoop ha已配置zookeeper环境,此处设置为false(默认为true),即不使用hbase自带的zookeeper,HBASE_CLASSPATH指向hbase配置文件的路径。
HBASE_LOG_DIR与HBASE_PID_DIR分别为日志与pid文件输出目录修改配置文件 hbase-site.xml,添加相关信息将以下配置信息添加到hbase-site.xml文件与之间。
[root@master conf]# vi hbase-site.xml hbase.rootdir hdfs://master:8020/hbase
hbase.master.info.port 16010 hbase.zookeeper.property.clientPort
2181 hbase.tmp.dir /usr/local/src/hbase/tmp
zookeeper.session.timeout 120000
hbase.cluster.distributed true hbase.zookeeper.quorum
master,slave1,slave2 hbase.zookeeper.property.dataDir
/usr/local/src/hbase/tmp/zookeeper-hbase hbase.rootdir:指定HBase的存储目录hbase.master.info.port:浏览器的访问端口。
hbase.zookeeper.property.clientPort: 指定zk的连接端口hbase.tmp.dir:指定hbase在本地下生成文件路径,类似于hadoop.tmp.dirzookeeper.session.timeout:RegionServer与Zookeeper间的连接超时时间。
当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.。
hbase.cluster.distributed:HBase是否为分布式模式hbase.zookeeper.quorum:默认值是 localhost,列出zookeepr ensemble中的servers。
hbase.zookeeper.property.dataDir:这里表示HBase在ZooKeeper上存储数据的位置修改 regionservers文件,删除localhost,添加以下内容[root@master conf]# vi regionservers。
slave1slave2为了让Hbase读取到hadoop的配置,将core-site.xml和hdfs-site.xml两个文件拷贝到 $HBASE_HOME/conf/ 目录下[root@master conf]# cp /usr/local/src/hadoop/etc/hadoop/core-site.xml /usr/local/src/hbase/conf/。
[root@master conf]# cp /usr/local/src/hadoop/etc/hadoop/hdfs-site.xml /usr/local/src/hbase/conf/1.5.2.2. 步骤二:集群分发
将master节点配置好的HBase安装包分发给slave1,slave2节点[root@master conf]# cd[root@master ~]# scp -r /usr/local/src/hbase root@slave1:/usr/local/src。
# 从master远程拷贝hbase文件到slave1节点[root@master ~]# scp -r /usr/local/src/hbase root@slave2:/usr/local/src# 从master远程拷贝hbase文件到slave2节点
[root@master ~]# chown -R hadoop:hadoop /usr/local/src/hbase[root@slave1 ~] # chown -R hadoop:hadoop /usr/local/src/hbase
[root@slave2 ~] # chown -R hadoop:hadoop /usr/local/src/hbase[root@master ~]# su - hadoop[hadoop@master ~]$ source /etc/profile
[root@slave1 ~] # su - hadoop[hadoop@slave1 ~]$ source /etc/profile[root@slave2 ~] # su - hadoop[hadoop@slave2 ~]$ source /etc/profile
1.5.2.3. 步骤三:HBase集群启动在master主节点,使用hadoop用户切换到/usr/local/src/hbase/bin目录下使用./start-hbase.sh命令启动[hadoop@master ~]$ zkServer.sh start。
[hadoop@slave1 ~]$ zkServer.sh start[hadoop@slave2 ~]$ zkServer.sh start[hadoop@master ~]$ start-all.sh
[hadoop@master ~]$ cd /usr/local/src/hbase/bin[hadoop@master bin]$ ./start-hbase.sh用webUI查看集群,特别强调hbase2.0的端口是16010。
图1-3 HBase浏览器界面2. 实验二 HBase 库操作与表操作2.1. 实验内容与目标完成本实验,您应该能够:l 掌握HBase库节点动态增减l 掌握HBase简单数据表操作2.2. 相关知识表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族
行:每个HBase表都由若干行组成,每个行由行键(row key)来标识列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元列限定符:列族里的数据通过列限定符(或列)来定位。
单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引
图1-4 HBase表结构2.3. 实验环境服务器集群4个以上节点,节点间网络互通,各节点最低配置:双核CPU、8GB内存、100G硬盘运行环境CentOS 7.4用户名/密码root/password
hadoop/password服务和组件HDFS、Yarn、MapReduce2.4. 实验过程2.4.1. 实验任务一: HBase 库操作2.4.1.1. 步骤一: HBase集群启动(上一个实验已经启动)(跳过)
HBase依赖hdfs服务,通过相互之间的依赖关系得到启动顺序为:Zookeeper > hadoop > HBase首先启动Zookeeper,在所有节点上执行命令[hadoop@master ~]$ zkServer.sh start。
[hadoop@slave1 ~]$ zkServer.sh start[hadoop@slave2 ~]$ zkServer.sh startZookeeper选举机制会自动选择Leader节点,在master节点启动hadoop服务。
[hadoop@master ~]$ start-all.shhadoop从节点会自行启动最后启动HBase(master节点)[hadoop@master ~]$ start-hbase.sh [hadoop@master ~]$ jps。
图1-5 jps查看相关进程2.4.1.2. 步骤二: HBase动态删除节点节点升级或者硬盘扩容在存储服务器上属于正常现象,当某存储节点需要扩容升级短暂下线后需要该节点下线假设slaves3节点扩容升级,执行以下命令,停止该节点上HBase服务。
[hadoop@master ~]$ cd /usr/local/src/hbase/bin[hadoop@master bin]$ graceful_stop.sh slave2graceful_stop.sh脚本会自行关闭平衡器,移动slaves2节点上的数据到其他节点上,此步骤会消耗大量时间等待。
同时需要hadoop中删除节点在hdfs-site.xml中添加配置需要新建exclude文件,该文件写入删除节点名称[hadoop@master bin]$ vi /usr/local/src/hadoop/etc/hadoop/exclude。
slave2[hadoop@master bin]$ vi /usr/local/src/hadoop/etc/hadoop/hdfs-site.xmldfs.hosts.exclude
/usr/local/src/hadoop/etc/hadoop/excludedfs.hosts.exclude:表示需要删除exclude中的节点。
(3)刷新配置生效[hadoop@master bin]$ cd[hadoop@master ~]$ hadoop dfsadmin –refreshNodes打开Web UI监控页面查看,发现此节点显示(Decommission In Progress),表示节点正在做数据迁移,等待后节点停止,dead node列表显示下线节点。
vpn官方地址:https://www.sandrakurvits.com/
(4)节点下线后需要将slaves与exclude文件中slave2删除,刷新hadoop命令,此时全部结束。
图1-6 HBase Web页面查看Dead Region节点2.4.1.3. 步骤三: HBase动态增加节点集群的分布式扩展是非关系数据库与传统数据库相比最大的优点在原有集群基础上增加新的节点slave2。
增加新节点首先保证新的hadoop集群已经运行正常,不需要关闭集群,执行以下命令即可(1) 在新的节点上启动服务切换到新增节点上,使用以下命令(记得删除)[hadoop@slave2 ~]$ cd /usr/local/src/hbase/bin。
[hadoop@slave2 bin]$ ./hbase-daemon.sh start regionserver
图1-7 HBase启动注:以上步骤的前提是此节点已增加到hadoop集群中,且正常使用2.4.2. 实验任务二:HBase表管理2.4.2.1. 步骤一:建立表,两个列簇:name和num打开浏览器,输入DataEngine安装完成后提供的 URL,初始账号密码为admin/admin。
如图1-5所示进入HBase命令行[hadoop@master ~]$ hbase shell建立表student,两个列簇:name和numhbase(main):001:0> create student,{NAME=>name},{NAME=>num}
0 row(s) in 1.5420 seconds=>HBase:: Table - scores新建学生表,存储姓名与学号语法:create , {NAME => , VERSIONS => }。
图1-8 HBase Web查看创建结果2.4.2.2. 步骤二:查看所有表与详细信息hbase(main):002:0> listTABLEstudent1 row(s) in 0.0100 seconds
=>["student"]查看建表详细信息hbase(main):003:0> describe studentTable student is ENABLED student COLUMN FAMILIES DESCRIPTION
{NAME => name, 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 => num, 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}
2 row(s) in 0.1310 seconds在建立表时没有指定列的详细属性,系统根据默认设置语法:describe 2.4.2.3. 步骤三:修改表hbase(main):004:0> alter student ,{NAME=>tel}。
Updating all regions with the new schema...1/1 regions updated.Done.0 row(s) in 2.2360 seconds 2 row(s) in 0. 0230 seconds
新增加新的列tel,alter也可以对列删除,对属性进行修改hbase(main):005:0> alter student ,{NAME=>name,VERSIONS=>2}Updating all regions with the new schema...。
1/1 regions updated.Done.0 row(s) in 2.0350 secondshbase(main):006:0> alter student,{NAME=>tel,METHOD=>delete}
Updating all regions with the new schema...1/1 regions updated.Done.0 row(s) in 2.1230 seconds修改原name列的VERSIONS属性为2。
删除刚增加的tel列2.4.2.4. 步骤四:删除表hbase(main):007:0> disable student0 row(s)in 2.2930secondshbase(main):009:0> drop student
0 row(s)in 1.2530secondsHBase( main) :023:0> listTABLE0 row(s)in 0.0150 seconds==>[]最后可查看数据库状态,包括正在运行的节点,死亡节点等信息。
hbase(main) :025 :0> status1 active master, 0 backup masters, 23. 实验三 HBase数据操作3.1. 实验内容与目标完成本实验,您应该能够:
l 学习HBase Shell基本操作l 数据的模糊查询l 批量数据的导入导出3.2. 相关知识DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。
DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
3.3. 实验环境服务器集群3个以上节点,节点间网络互通,各节点最低配置:双核CPU、8GB内存、100G硬盘运行环境CentOS 7.4用户名/密码root/password hadoop/password
服务和组件HDFS、Yarn、MapReduce3.4. 实验过程3.4.1. 实验任务一:简单操作3.4.1.1. 步骤一:插入数据和修改建立表student,两个列簇:name和numhbase(main):001:0> create student,{NAME=>name},{NAME=>num}
hbase(main):002:0> list插入两条数据:hbase(main):003:0> put student,rk1,name,Tomhbase(main):004:0> put student,rk1,num,123456
hbase(main):005:0> put student,rk2,name,Sunhbase(main):006:0> put student,rk2,num,123456hbase(main):007:0> put student,rk3,name:cha,wangyu
查看整个表记录修改操作也是用put命令,就是重新添加内容把,把以前的内容覆盖语法:put ,,,,其中,table_name为表名,rk1为rowkey,name:。
cha name为列族,cha为列,Tom为值,同一个列族下可以有多个列,同一个rowkey视为同一行3.4.1.2. 步骤二:读取指定行、指定行中的列的信息hbase(main):009:0> get student,rk1。
COLUMN CELL name: timestamp=1596186987758, value=Tom num: timestamp=1596186991960, value=123456 2 row(s) in 0.0630 seconds
hbase(main):009:0> get student,rk1,nameCOLUMN CELL name: timestamp=1596186987758, value=Tom 1 row(s) in 0.0200 seconds
语法:get ,,[,....]3.4.1.3. 步骤三:scan命令扫描全表语法:scan , {COLUMNS => [ ,.... ], LIMIT => num}
注:数据导入时,要注意数据的格式,否则显示为十六进制hbase(main):013:0>scan studentROW COLUMN+CELL rk1 column=name:, timestamp=1596186987758, value=Tom 。
rk1 column=num:, timestamp=1596186991960, value=123456 rk2 column=name:, timestamp=1596186995797, value=Sun
rk2 column=num:, timestamp=1596187000182, value=123456 rk3 column=name:cha, timestamp=1596187003825, value=wang
yu 3 row(s) in 0.0520 seconds3.4.1.1. 步骤四:删除指定行中的列、指定行,清空表hbase(main):014:0>delete student,rk2,namehbase(main):014:0>deleteall student,rk2
hbase(main):014:0>truncate studentTruncating student table (it may take a while): - Disabling table...
- Truncating table...0 row(s) in 7.2190 seconds语法:delete , , , ,必须指定列名,这里需要注意,如果该列保存有多个版本的数据,将一并被删除。
使用deleteall命令,删除table_name表中rowkey002这行数据语法:deleteall , , , ,可以不指定列名,删除整行数据。
使用truncate命令,删除table_name表中的所有数据语法:truncate 其具体过程是:disable table -> drop table -> create table。
3.4.2. 实验任务二:模糊查询3.4.2.1. 步骤一:限制查询hbase(main):003:0> put student,rk1,name,Tomhbase(main):004:0> put student,rk1,num,123456
hbase(main):005:0> put student,rk2,name,Sunhbase(main):006:0> put student,rk2,num,123456hbase(main):007:0> put student,rk3,name:cha,wangyu
hbase(main):014:0> scan student,{COLUMNS=>name}ROW COLUMN+CELL rk1 column=name:, timestamp=1596187375037, value=Tom
rk2 column=name:, timestamp=1596187384917, value=Sun rk3 column=name:cha, timestamp=1596187394040, value=wang
yu 3 row(s) in 0.0310 secondshbase(main):002:0> scan student,{COLUMNS=>[name,num],LIMIT=>2}ROW COLUMN+CELL
rk1 column=name:, timestamp=1596187375037, value=Tom rk1 column=num:, timestamp=1596187380066, value=123456
rk2 column=name:, timestamp=1596187384917, value=Sun rk2 column=num:, timestamp=1596187389628, value=123456
2 row(s) in 0.0160 seconds语法:scan ,{COLUMNS=> column }count对表计数时INTERVAL: 每隔多少行显示一次count,默认是1000,CACHE:每次去取的缓存区大小,默认是10,调整该参数可提高查询速度,大表查询通过参数设置可以加快计算速度。
语法:count , {INTERVAL => intervalNum, CACHE => cacheNum}hbase(main):002:0> count student3 row(s) in 0.6010 seconds
=> 33.4.2.2. 步骤二:限制时间范围hbase(main):004:0> scan student, {TIMERANGE => [1595397845355,1595397925166]}ROW COLUMN+CELL
0 row(s) in 0.0200 seconds时间戳是1970年01月01日00时00分00秒起至当下的总秒数通常表示提供一份电子证据,以证明用户的某些数据的产生时间3.4.2.3. 步骤三:PrefixFilter:rowKey前缀过滤。
hbase(main):005:0> scan student,{FILTER=>"PrefixFilter(rk)"}ROW COLUMN+CELL rk1 column=name:, timestamp=1596187375037, value=Tom
rk1 column=num:, timestamp=1596187380066, value=123456 rk2 column=name:, timestamp=1596187384917, value=Sun
rk2 column=num:, timestamp=1596187389628, value=123456 rk3 column=name:cha, timestamp=1596187394040, value=wang
yu 3 row(s) in 0.0600 seconds同时也有QualifierFilter:列名过滤器、TimestampsFilter:时间戳过滤器等,支持“且”操作ValueFilter:值确定查询(value=Tom)与模糊查询(value包含m)。
hbase(main):005:0> scan student,FILTER=>"ValueFilter(=,binary:Tom)"ROW COLUMN+CELL rk1 column=name:, timestamp=1596187375037, value=Tom
1 row(s) in 0.0480 secondshbase(main):006:0> scan student,FILTER=>"ValueFilter(=,substring:m)"ROW COLUMN+CELL
rk1 column=name:, timestamp=1596187375037, value=Tom 1 row(s) in 0.0270 seconds3.4.3. 实验任务三:批量导入/导出3.4.3.1. 步骤一: ImportTsv工具
命令:bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsvUsage: importtsv -Dimporttsv.columns=a,b,c
首先数据存入到.csv文件,上传至hdfs服务器中hbase调用MapReduce服务,当数据量较大时需等待[hadoop@master ~]$ hdfs dfs -put /opt/software/student.csv /input。
[hadoop@master ~]$hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,name,num student /input/student.csv
图1-9 MR操作数据导入3.4.3.2. 步骤二: Export数据导出命令:bin/hbase org.apache.hadoop.hbase.mapreduce.ExportUsage:
[hadoop@master ~]$ cd /usr/local/src/hbase/bin[hadoop@master bin]$ hbase org.apache.hadoop.hbase.mapreduce.Export student /output/hbase-data-back
图1-10 数据导出与查看
【飞机专用地址:vpn.shunjianboy.top】