考虑到HBase将每个列族存储在单独的HFile中以及行可以跨越多个列族的事实.HBase如何确保跨越多个列族的行的放置/删除操作确实是原子的?
我竭力要建立一个HBase的分布式集群2个节点,一个是我的机器,一个是虚拟机,使用VirtualBox中的"仅主机"适配器.
我的问题是区域服务器(来自VM机器)无法连接到在主机上运行的Hbase主机.虽然在Hbase shell中我可以列出,创建表,...,在VM机器上的regionserver('slave'),日志总是显示
org.apache.hadoop.hbase.regionserver.HRegionServer: Unable to connect to master. Retrying. Error was:
java.net.ConnectException: Connection refused
Run Code Online (Sandbox Code Playgroud)
以前,我已成功在此集群上设置Hadoop,HDFS和MapReduce,其中2个节点名为"master","slave","master"作为主节点,"master"和"slave"都作为从节点工作,这些绑定到VirtualBox的vboxnet0接口的名称(/ etc/hostname中的主机名不同).我还要为每个节点指定"slave.host.name"属性为"master"和"slave".
似乎'master'上的Hbase master始终使用'localhost'主机名运行,从slave机器,我无法使用'master'主机名telnet到hbase master.那么,有什么办法可以指定HBase的主人为"主"主机名的使用,我已经试过指定有关动物园管理员,硕士,RegionServer的DNS界面的一些属性使用主机和从机之间的内部接口,但它仍然不能工作.
像/ etc/hosts这样的东西
127.0.0.1 localhost
127.0.0.1 ubuntu.mymachine
# For Hadoop
192.168.56.1 master
192.168.56.101 slave
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud) 我是HBASE和HADOOP的新手,需要兼容的hbase和hadoop版本来运行我的实验.
"http://apache.techartifact.com/mirror/hbase/"的当前稳定版本是hbase-0.94.1.任何人都可以告诉我应该使用哪个版本的hadoop,这样就没有兼容性问题,也没有未来的数据丢失.
请从当前在线提供的hadoop和hbase版本中进行建议.
以下是我用于下载这些版本的网站
http://apache.techartifact.com/mirror/hadoop/common/(hadoop的) http://apache.techartifact.com/mirror/hbase/(HBase的)
注意:几个小时前,我开始使用 HBase 并且我来自 RDBMS 背景:P
我有一个类似 RDBMS 的表 CUSTOMERS 具有以下列:
我想到了以下 HBase 等效项:
表:客户行键:客户 ID
列族:CUSTOMER_INFO
列:姓名电子邮件地址移动
从我读过的内容来看,RDBMS 表中的主键大致类似于HBase 表的行键。因此,我想保留 CUSTOMER_ID 作为行键。
我的问题既愚蠢又直接:
* * *编辑添加示例代码片段
我只是想在 shell 中使用“put”为客户表创建一行。我这样做了:
hbase(main):011:0> put 'CUSTOMERS', 'CUSTID12345', 'CUSTOMER_INFO:NAME','Omkar Joshi'
0 row(s) in …Run Code Online (Sandbox Code Playgroud) 我正在使用Hbase,当我查询Hbase时,我开始遇到一个丑陋的错误.
问题是当我尝试与Hbase建立连接时出现此错误.唯一的问题是我使用线程,,,但实际上并不是太多.
Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=10, exceptions:
Wed Dec 04 16:09:13 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:14 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:15 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:16 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:18 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:20 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:24 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed …Run Code Online (Sandbox Code Playgroud) 这种Hbase/Spark版本的组合似乎非常有毒.我花了好几个小时试图找到各种可行的MergeStrategy,但无济于事.
这是当前build.sbt的核心:
val sparkVersion = "1.0.0"
// val sparkVersion = "1.1.0-SNAPSHOT"
val hbaseVersion = "0.96.1.1-cdh5.0.2"
libraryDependencies ++= Seq(
"org.apache.hbase" % "hbase-client" % hbaseVersion,
"org.apache.hbase" % "hbase-common" % hbaseVersion,
"org.apache.hbase" % "hbase-server" % hbaseVersion,
"org.apache.hbase" % "hbase-protocol" % hbaseVersion,
"org.apache.hbase" % "hbase-examples" % hbaseVersion,
("org.apache.spark" % "spark-core_2.10" % sparkVersion withSources()).excludeAll(ExclusionRule("org.mortbay.jetty")),
"org.apache.spark" % "spark-sql_2.10" % sparkVersion withSources()
)
Run Code Online (Sandbox Code Playgroud)
以下是不可避免地重现的错误消息:
14/06/27 19:49:24 INFO HttpServer: Starting HTTP Server
[error] (run-main-0) java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in …Run Code Online (Sandbox Code Playgroud) 我有一个HBase表,我需要从几个范围得到结果.例如,我可能需要从不同的范围获取数据,如第1-6行,第100-150行......我知道每次扫描时,我都可以定义起始行和停止行.但如果我有6个范围,我需要扫描6次.有没有什么方法可以从一次扫描或一次RPC中获得多个范围的结果?我的HBase版本是0.98.
有时我想从HBase shell中的运行命令退出,例如扫描操作通常需要花费太多时间.
所以我想停止运行这个命令,但我不想退出HBase shell.
通常的方法是我停止运行命令,我使用Ctrl + C,它可以停止运行命令,但它也退出HBase shell,然后我需要花更多的时间来重新输入HBase shell.
有没有更好的方法来解决这个问题?
我是Saiku的新手.我想把saiku和凤凰融为一体.凤凰实习生与HBase联系.我创建了一个模式,当Saiku尝试加载phoenix schema xml时,Am触发了以下错误.我正在努力想弄明白.任何人都可以建议我错过了什么,做了什么.
我使用的是以下版本的s/ws:
Phoenix 4.4 HBase 1.1.2 Saiku 3.8
感谢您的支持.
请在下面找到异常跟踪:
java.lang.IllegalArgumentException: Unable to PTableType enum for value of 'MATERIALIZED VIEW'
at org.apache.phoenix.schema.PTableType.fromValue(PTableType.java:88)
at org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.getTables(PhoenixDatabaseMetaData.java:1057)
at org.apache.commons.dbcp.DelegatingDatabaseMetaData.getTables(DelegatingDatabaseMetaData.java:604)
at mondrian.rolap.aggmatcher.JdbcSchema.loadTablesOfType(JdbcSchema.java:1205)
at mondrian.rolap.aggmatcher.JdbcSchema.loadTables(JdbcSchema.java:1162)
at mondrian.rolap.aggmatcher.JdbcSchema.load(JdbcSchema.java:1042)
at mondrian.rolap.RolapSchema$PhysSchema.<init>(RolapSchema.java:976)
at mondrian.rolap.RolapSchemaLoader.createSyntheticPhysicalSchema(RolapSchemaLoader.java:1479)
at mondrian.rolap.RolapSchemaLoader.validatePhysicalSchema(RolapSchemaLoader.java:684)
at mondrian.rolap.RolapSchemaLoader.loadStage2(RolapSchemaLoader.java:376)
at mondrian.rolap.RolapSchemaLoader.loadStage1(RolapSchemaLoader.java:336)
at mondrian.rolap.RolapSchemaLoader.loadStage0(RolapSchemaLoader.java:272)
at mondrian.rolap.RolapSchemaLoader.createSchema(RolapSchemaLoader.java:4304)
at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:210)
at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:62)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:160)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:84)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:112)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:68)
at mondrian.olap4j.MondrianOlap4jConnection.<init>(MondrianOlap4jConnection.java:153)
at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.<init>(FactoryJdbc4Plus.java:323)
at mondrian.olap4j.FactoryJdbc41Impl$MondrianOlap4jConnectionJdbc41.<init>(FactoryJdbc41Impl.java:118)
at mondrian.olap4j.FactoryJdbc41Impl.newConnection(FactoryJdbc41Impl.java:32)
at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:139)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at org.saiku.datasources.connection.SaikuOlapConnection.connect(SaikuOlapConnection.java:111)
at org.saiku.datasources.connection.SaikuOlapConnection.connect(SaikuOlapConnection.java:57)
at org.saiku.datasources.connection.SaikuConnectionFactory.getConnection(SaikuConnectionFactory.java:29) …Run Code Online (Sandbox Code Playgroud) 我想了解HBase架构.我可以看到两个不同的术语用于相同的目的.
Write Ahead Logs并且Memstore,两者都用于存储尚未持久化的新数据permanent storage.
WAL和MemStore有什么区别?
更新:
WAL - 用于在服务器崩溃时恢复尚未保留的数据.MemStore - 将更新作为Sorted Keyvalue存储在内存中.
在将数据写入磁盘之前,似乎有很多重复数据.
hbase ×10
hadoop ×4
nosql ×2
apache-spark ×1
architecture ×1
database ×1
hbase-shell ×1
hdfs ×1
java ×1
olap ×1
phoenix ×1
saiku ×1
sbt ×1
scala ×1