热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hbase中为何不能向表中插入数据_hbase快速开始

https:hbase.apache.orgbook.html#arch.overview快速开始HBase需要JDK支持下载安装包,直接解压:$tar

https://hbase.apache.org/book.html#arch.overview快速开始
HBase 需要JDK支持
下载安装包,直接解压:
$ tar xzvf hbase-3.0.0-SNAPSHOT-bin.tar.gz
$ cd hbase-3.0.0-SNAPSHOT/
在启动HBase 的时候,你必须设置JAVA_HOME环境变量。为了让这个更简单,HBase可以让你在 conf/hbase-env.sh中设置。
例如:
# Set environment variables here.
# The java implementation to use.
export JAVA_HOME=/usr/jdk64/jdk1.8.0_112
编辑 conf/hbase-site.xml,HBase主配置文件。
此时,您需要在本地文件系统上指定HBase和ZooKeeper写入数据和风险信息的目录。默认情况下,是在/tmp创建一个新目录。
下面是单服务HBase的配置 例子:


hbase.rootdir
file:///home/testuser/hbase


hbase.zookeeper.property.dataDir
/home/testuser/zookeeper


hbase.unsafe.stream.capability.enforce
false

Controls whether HBase will check for stream capabilities (hflush/hsync).
Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
with the 'file://' scheme, but be mindful of the NOTE below.
WARNING: Setting this to false blinds you to potential data loss and
inconsistent system state in the event of process and/or node failures. If
HBase is complaining of an inability to use hsync or hflush it's most
likely not a false positive.


不用创建HBase 数据目录。HBase将自动创建,如果你创建了目录,HBase会试图合并。
要在现有的HDFS实例上安装HBase,请将hbase.rootdir设置为指向实例上的目录:例如HDFS://http://namenode.example.org:8020/HBase。
1.bin/start-hbase.sh 脚本提供了更简单的方式来启动HBase。可以使用jps命令来查看运行的进程 HMaster。在单服务器模式下的HBase在单个JVM中运行所有的后台进程,例如HMaster,单个HRegionServer和ZooKeeper进程。访问 http://localhost:16010 来查看HBase Web UI过程:第一次使用HBase
1.连接到HBase
使用位于HBase安装目录中bin/目录中的hbase shell命令连接到正在运行的HBase实例。 在此示例中,省略了启动HBase Shell时打印的一些用法和版本信息。 HBase Shell提示符以>字符结尾。
$ ./bin/hbase shell
hbase(main):001:0>
使用help 会打印HBase Shell 帮助文本
2.创建表
使用create 命令来创建新表。你必须指定表名和 ColumnFamily 名称。
hbase(main):001:0> create 'test', 'cf'
0 row(s) in 0.4170 seconds
=> Hbase::Table - test
3.列出表的信息
使用list命令来确认现在现存的表
hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0180 seconds
=> ["test"]
使用describe命令查看详细信息,包含默认配置。
4.将数据增加到你的表中
使用put 命令
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds
在这里,我们插入三个值,一次一个。 第一个插入row1,列cf:a,值为value1。 HBase中的列由列族前缀组成,在此示例中为cf,后跟冒号,然后是列限定符后缀,在本例中为a。
5.扫描表的所有数据
从HBase获取数据的一种方法是扫描。 使用scan命令扫描表中的数据。 您可以限制扫描,但是目前,所有数据都被获取。
hbase(main):006:0> scan 'test'
6.获得单独的数据行
在某一时间获取到单独一行,使用get命令
hbase(main):007:0> get 'test', 'row1'
7.禁用一个表
如果要删除表或更改其设置,以及在某些其他情况下,您需要先使用disable命令禁用该表。 您可以使用enable命令重新启用它。
hbase(main):008:0> disable 'test'
0 row(s) in 1.1820 seconds
hbase(main):009:0> enable 'test'
0 row(s) in 0.1770 seconds
8.删除表
使用drop 命令
hbase(main):011:0> drop 'test'
0 row(s) in 0.1370 seconds
9.退出HBase Shell
使用quit 命令退出,HBase仍然在后台运行
过程:关闭HBase
1.与提供bin / start-hbase.sh脚本以方便地启动所有HBase守护程序的方式相同,bin / stop-hbase.sh脚本会停止它们。
./bin/stop-hbase.sh
2.在发布命令之后,会花费一些时间来关闭。使用jps来确定HMaster和HRegionServer 进程关闭。
上面已经向您展示了如何启动和停止HBase的独立实例。 在下一节中,我们将简要介绍其他hbase部署模式。伪分布式本地安装
在快速启动了单服务器模式之后,你可以重新配置HBase 运行在伪分布式模式下。这个模式下,虽然仍在一个主机上,但是,每个HBase守护进程(HMaster,HRegionServer,ZooKeeper) 运行在分开的进程:
在单服务器模式下,所有守护进程运行在一个jvm进程/实例中。在下面演示中,我们存储数据到HDFS中,假设你有一个可用的HDFS。您可以跳过HDFS配置以继续将数据存储在本地文件系统中。
1.停止运行的HBase
如果您刚刚完成快速启动并且HBase仍在运行,请将其停止。 此过程将创建一个全新的目录,HBase将存储其数据,因此您之前创建的任何数据库都将丢失。
2.配置HBase
编辑hbase-site.xml配置。 首先,添加以下属性,该属性指示HBase以分布式模式运行,每个守护程序有一个JVM实例。

hbase.cluster.distributed
true

下一步,变更 hbase.rootdir 从本地文件系统到HDFS文件系统地址,使用hdfs: URI语法。在这个例子中,HDFS运行在本地的8020端口。请务必删除hbase.unsafe.stream.capability.enforce的条目或将其设置为true

hbase.rootdir
hdfs://localhost:8020/hbase

不需要在HDFS中创建目录。HBase会自动创建
3.启动HBase
使用bin/start-hbase.sh 启动HBase。如果系统被正确配置,jps 命令将显示HMaster 和HRegionServer 进程运行
4.检查HBase 目录在HDFS中
如果所有工作都正确,HBase将在HDFS中创建目录。在上面的配置中,其存储在HDFS中的/hbase/。你可以在Hadoop的bin/目录中使用hadoop fs 命令列出这个目录
./bin/hadoop fs -ls /hbase
5.创建一个表并填充数据
6.启动和停止备用的HBase Master(HMaster)服务器
在同一硬件上运行多个HMaster实例在生产环境中没有意义,就像运行伪分布式集群对生产没有意义一样。 此步骤仅用于测试和学习目的。
HMaster服务器控制HBase集群。 您可以启动最多9个备用HMaster服务器,算上主服务器是10个服务器。 要启动备份HMaster,请使用local-master-backup.sh。 对于要启动的每个主的备份,添加一个表示该主站的端口偏移量的参数。 每个HMaster使用两个端口(默认为16000和16010)。 端口偏移量将添加到这些端口,因此使用偏移量2,备份HMaster将使用端口16002和16012.以下命令使用端口16002 / 16012,16003 / 16013和16005/16015启动3个备份服务器。
./bin/local-master-backup.sh start 2 3 5
要在不杀死整个群集的情况下终止备份主服务器,您需要找到其进程ID(PID)。 PID存储在名为/tmp/hbase-USER-X-master.pid的文件中。 该文件的唯一内容是PID。 您可以使用kill -9命令来终止该PID。 以下命令将使用端口偏移量1终止主服务器,但保持集群运行:
cat /tmp/hbase-testuser-1-master.pid |xargs kill -9
7.启动和停止其他RegionServers
HRegionServer通过HMaster的指示管理其在StoreFiles中的数据。通常,HRegionServer在群集中的每个节点上运行。在同一系统上运行多个HRegionServers对于以伪分布式模式进行测试非常有用。 local-regionservers.sh命令允许您运行多个RegionServers。它的工作方式与local-master-backup.sh命令类似,因为您提供的每个参数都代表实例的端口偏移量。每个RegionServer需要两个端口,默认端口为16020和16030.自HBase版本1.1.0起,HMaster不使用区域服务器端口,这将留下10个端口(16020到16029和16030到16039)用于RegionServers。要支持其他RegionServers,请在运行脚本local-regionservers.sh之前将环境变量HBASE_RS_BASE_PORT和HBASE_RS_INFO_BASE_PORT设置为适当的值。例如对于基本端口,值为16200和16300,在服务器上可以支持99个额外的RegionServers。以下命令启动另外四个RegionServers,在16022/16032(基本端口16020/16030加2)的顺序端口上运行。
.bin/local-regionservers.sh start 2 3 4 5
要手动关闭 RegionServers,使用带stop参数合服务器便宜量的 local-regionservers.sh 命令
.bin/local-regionservers.sh stop 3
8.停止 HBase
您可以使用bin/stop-hbase.sh命令的方式停止HBase。2.4 完全分布式
实际上,您需要完全分布式配置才能完全测试HBase并在实际场景中使用它。 在分布式配置中,群集包含多个节点,每个节点运行一个或多个HBase守护程序。 这些包括主要和备份主实例,多个ZooKeeper节点和多个RegionServer节点。
此高级快速入门为您的群集添加了两个节点。 架构如下:

74c1f73397d3ccaa036680448b580792.png


本快速入门假定每个节点都是虚拟机,并且它们都在同一网络上。 它建立在之前的伪分布式本地安装的基础上,假设您在该过程中配置的系统现在是node-a。 在继续之前停止node-a上的HBase。
确保所有节点都具有完全的通信访问权限,并且没有防火墙规则可以阻止它们相互通信。 如果您看到任何错误,例如no route to host,请检查您的防火墙。
过程:配置无密码 SSH 访问
node-a需要能够登录到node-b和node-c(以及自身)才能启动守护进程。 完成此操作的最简单方法是在所有主机上使用相同的用户名,并从node-a配置登录到其他每个主机无密码SSH。
1.在 node-a,产生一个键对
以运行HBase的用户身份登录时,使用以下命令生成SSH密钥对:
ssh-keygen -t rsa
如果命令成功,则将密钥对的位置打印到标准输出。 公钥的默认名称是id_rsa.pub。
2.在其他节点上创建将保存共享密钥的目录
在node-b和node-c上,以HBase用户身份登录,并在用户home 目录中创建一个.ssh /目录(如果该目录尚不存在)。 如果它已存在,请注意它可能已包含其他键。
3.拷贝公钥到其他节点
通过使用scp或其他一些安全方法,将公钥从node-a安全地复制到每个节点。 在每个其他节点上,创建一个名为.ssh / authorized_keys的新文件(如果该文件尚不存在),并将id_rsa.pub文件的内容追加到其末尾。 请注意,您还需要为node-a本身执行此操作。
cat id_rsa.pub >> ~/.ssh/authorized_keys
4.测试无密码登录
5.
由于node-b将运行备份Master,重复上面的过程,在node-a的任何地方替换node-b。 请确保不要覆盖现有的.ssh / authorized_keys文件。
过程:准备 node-a
node-a将运行主master和ZooKeeper进程,但不运行RegionServers。 从node-a开始停止RegionServer。
1.编辑conf/regionservers并remove包含localhost的行。 为node-b和node-c添加主机名或IP地址的行
即使您确实想要在node-a上运行RegionServer,也应该通过其他服务器用来与之通信的主机名来引用它。 在这种情况下,那将是http://node-a.example.com。 这使您可以将配置分发到群集的每个节点,任何主机名都会发生冲突。 保存文件。
2.配置HBase 使用node0b作为 主备份服务器
在conf/called backup-master中创建一个新文件,并使用node-b的主机名为其添加一个新行。 在此演示中,主机名为http://node-b.example.com。
3.配置ZooKeeper
实际上,您应该仔细考虑ZooKeeper配置。 您可以在zookeeper部分找到有关配置ZooKeeper的更多信息。 此配置将指示HBase启动和管理群集的每个节点上的ZooKeeper实例。
在node-a,编辑conf/hbase-site.xml并增加下来属性

hbase.zookeeper.quorum
node-a.example.com,node-b.example.com,http://node-c.example.com

hbase.zookeeper.property.dataDir
/usr/local/zookeeper

4.在您的配置中,您已将node-a引用为localhost,将引用更改为指向其他节点用于引用node-a的主机名。 在这些示例中,主机名是http://node-a.example.com。
过程: 准备node-b和node-c
node-b将运行备份主服务器和ZooKeeper实例。
1.下载和解压HBase
将HBase下载并解压缩到node-b。
2.从node-a拷贝配置文件到node-b和node-c
群集的每个节点都需要具有相同的配置信息。 将conf/目录的内容复制到node-b和node-c上的conf/目录
过程:启动和测试你的集群
1.
确保HBase没有在任何节点上运行
如果您忘记在之前的测试中停止HBase,则会出现错误。 使用jps命令检查HBase是否在任何节点上运行。 查找进程HMaster,HRegionServer和HQuorumPeer。 如果他们存在,kill 掉他们。
2.启动集群
在node-a上,发出start-hbase.sh命令。 您的输出将类似于以下内容。
$ bin/start-hbase.sh
node-c.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-c.example.com.out
node-a.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-a.example.com.out
node-b.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-b.example.com.out
starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-node-a.example.com.out
node-c.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-c.example.com.out
node-b.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-b.example.com.out
node-b.example.com: starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-nodeb.example.com.out
ZooKeeper首先启动,然后是master,然后是RegionServers,最后是备份主服务器。
3.验证进程都在运行中
在群集的每个节点上,运行jps命令并验证每个服务器上是否正在运行正确的进程。 如果它们用于其他目的,您可能会在服务器上看到其他Java进程。
node-a jps的输出
jps
20355 Jps
20071 HQuorumPeer
20137 HMaster
node-b jps的输出
jps
15930 HRegionServer
16194 Jps
15838 HQuorumPeer
16010 HMaster
node-c jps的输出
jps
13901 Jps
13639 HQuorumPeer
13737 HRegionServer
ZooKeeper进程名称
HQuorumPeer进程是一个ZooKeeper实例,由HBase控制和启动。 如果以这种方式使用ZooKeeper,则每个群集节点仅限一个实例,并且仅适用于测试。 如果ZooKeeper在HBase之外运行,则该进程称为QuorumPeer。
4.在Web UI 上查阅
在HBase比0.98.x更新的情况下,HBase Web UI使用的HTTP端口从Master的60010和每个RegionServer的60030变为Master的16010和RegionServer的16030。
如果一切设置正确,您应该能够连接到Master http://node-a.example.com:16010/的UI或http://node-b.example.com:16010上的辅助主机。 如果您可以通过localhost连接但不能从其他主机连接,请检查防火墙规则。 您可以在端口16030查看其IP地址的每个RegionServers的Web UI。
5.测试节点或服务消失时会发生什么
使用已配置的三节点群集,事情将不会非常有弹性。 您仍然可以通过终止关联进程并查看日志来测试主Master或RegionServer的行为



推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • java实现rstp格式转换使用ffmpeg实现linux命令第一步安装node.js和ffmpeg第二步搭建node.js启动websocket接收服务
    java实现rstp格式转换使用ffmpeg实现linux命令第一步安装node.js和ffmpeg第二步搭建node.js启动websocket接收服务第三步java实现 ... [详细]
author-avatar
手机用户2602915215
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有