我有一个网络有一些奇怪的(据我所知)DNS服务器,导致Hadoop或HBase出现故障.
它将我的主机名解析为我的机器不知道的某个地址(即没有这样的界面).
如果我在/ etc/hosts中有以下条目,Hadoop会工作:
127.0.0.1 localhost
127.0.1.1 myhostname
Run Code Online (Sandbox Code Playgroud)
如果进入"127.0.1.1 MYHOSTNAME"是不存在的文件上传到HDFS失败,并抱怨说,它可以将文件复制只有0数据节点,而不是1.
但在这种情况下HBase不起作用:从HBase shell创建表会导致NotAllMetaRegionsOnlineException(实际上由HMaster导致尝试绑定到DNS服务器为myhostname返回的错误地址).
在其他网络中,我使用以下/ etc/hosts:
127.0.0.1 localhost
192.168.1.1 myhostname
Run Code Online (Sandbox Code Playgroud)
Hadoop和HBase都可以使用.问题是在第二个网络中,地址是动态的,我无法将其列入/ etc/hosts以覆盖奇怪的DNS返回的结果.
Hadoop以伪分布式模式运行.HBase也可以在单个节点上运行.
无法更改DNS服务器的行为.在hbase/conf/regionservers中将"localhost"更改为127.0.0.1不会改变任何内容.
有人可以提出一种方法,如何在保留互联网连接的同时覆盖其行为(我实际上是通过Teamviewer在客户端的机器上工作).或者某种方式配置HBase(或它管理的Zookeeper)不使用主机名来确定要绑定的地址?
我有一个名为“ mytable”的hbase表,其中只有一个列族“ default”和一个限定符“ details”。
现在,我执行以下查询:
get 'mytable', 'test'
Run Code Online (Sandbox Code Playgroud)
结果的价值被削减了。它应该是一个数字(长整数):
COLUMN CELL
default:details timestamp=1337007859494, value=\x00\x00\x00\x00\x00\x00\xDFH
1 row(s) in 0.0360 seconds
Run Code Online (Sandbox Code Playgroud)
为什么我只看到前七个字节?我如何看到全部价值?
如果我要求的东西价值很小,那就行得通。但是大的价值观是不完整的。
我正致力于写HBase集群.我只有在数据不存在时才写,因此我使用了checkAndPut().但与之相比,表现较差put(List<Put>).有什么方法可以将这两个操作结合起来吗?我试着环顾四周但找不到任何东西.
有没有一种简单的方法来查找htable中的总行数?我不想为此扫描所有区域.如果行数存储在表或区域的元数据中某处,那么这将是很好的.
我是Hbase的新手
是否可以/如何在Hbase中自动增加行键?(比如每个插入行键必须自动递增)
或者是否可以自动增加任何其他列?(对于每个插入,此列必须自动递增1)
我使用以下命令在OpenTSDB中为测试目的制作了两个metrices:
./build/tsdb mkmetric temperatures
./build/tsdb mkmetric meterreadings
Run Code Online (Sandbox Code Playgroud)
我还在这些metrices中使用Java输入数据点:
put temperatures 1356998400 23.5 room=bedroom floor=1\n
put meterreading 1430568000 32800 accumulationBehaviour=4 commodity=1 dataQualifier=12 defaultQuality=0 flowDirection=1 intervalLength=900 intervalLength=900 kind=12 phase=769 powerOfTenMultiplier=0 timeAttribute=0 uom=72
put meterreading 1430568900 33624 accumulationBehaviour=4 commodity=1 dataQualifier=12 defaultQuality=0 flowDirection=1 intervalLength=900 intervalLength=900 kind=12 phase=769 powerOfTenMultiplier=0 timeAttribute=0 uom=72
put meterreading 1430569800 35192 accumulationBehaviour=4 commodity=1 dataQualifier=12 defaultQuality=0 flowDirection=1 intervalLength=900 intervalLength=900 kind=12 phase=769 powerOfTenMultiplier=0 timeAttribute=0 uom=72
put meterreading 1430570700 37928 accumulationBehaviour=4 commodity=1 dataQualifier=12 defaultQuality=0 flowDirection=1 intervalLength=900 intervalLength=900 kind=12 phase=769 powerOfTenMultiplier=0 timeAttribute=0 uom=72
Run Code Online (Sandbox Code Playgroud)
现在我想删除所有数据和矩阵,以便OpenTSDB表现为全新安装.
在他们使用scan命令提到的文档中,我不知道如何使用此命令.
我在hbase中有一个名为"sample"的表.我需要使用Apache spark-sql查询查询表.有没有办法使用Apache spark-sql查询读取hbase数据?
我正在寻找一个分布式时间序列数据库,它可以在集群设置模式和生产准备中免费使用,而且必须很好地适应hadoop生态系统.
我有一个基本上大约150k传感器的IOT项目,它每10分钟或1小时发送一次数据,所以我试着看一下时间序列数据库,它具有聚合度量,下采样,预聚合(滚 - 我已经在这个Google样式表文档时间序列数据库比较中找到了这个比较.
我测试了Opentsdb,hbaserowkey的数据模型非常适合我的用例:但是需要为我的用例开发的函数是:
我已经测试了keirosDB,这是一个带有更丰富API的opentsdb的分支,它使用Cassandra作为后端存储,事实是他们的API完成了我所寻找的下采样汇总查询倍数指标等等.
我已经测试了Warp10.io和Apache Phoenix,我在这里阅读了Hortonworks链接,它将被Ambari Metrics使用,因此我认为它也非常适合时间序列数据.
我的问题是截至目前为止,对于所有类型的请求,请求在1S以下的性能进行实时分析的最佳时间序列数据库示例:我们希望50个传感器在5年内重新采样的聚合数据的平均值由几个月?
我认为这样的请求不能在1S下完成,所以我相信这些请求我们需要一些汇总/预聚合机制,但我不太确定,因为那里有很多工具,我无法确定哪一个适合我需要最好的.
我正在处理从Habse中的表中检索到的Get对象.我想动态检索与该get相关的所有列值,因为我不知道列族的确切名称
val result1 = hTable.get(g)
if (!result1.isEmpty) {
//binaryEpisodes = result1.getValue(Bytes.toBytes("episodes"),Bytes.toBytes("episodes"))
//instead of above retrieve all values dynamically
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Spark中的HiveContext访问hive中映射的hbase表.但是我得到了ClassNotFoundException例外.下面是我的代码.
import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
val df = sqlContext.sql("select * from dbn.hvehbasetable")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误..
17/06/22 07:17:30错误日志:initSerDe中的错误:java.lang.ClassNotFoundException未找到类org.apache.hadoop.hive.hbase.HBaseSerDe java.lang.ClassNotFoundException:类org.apache.hadoop.hive在org.apache的org.apache.hadoop.conf.Contaiguration.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:385)的org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2120)找不到.hbase.HBaseSerDe位于org.apache.hadoop.hive的org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:258)的.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:276) .g.apache.spark.cl.位于org.apache.spark的scala.Option.map(Option.scala:145)的.apache.spark.sql.hive.client.ClientWrapper $$ anonfun $ getTableOption $ 1 $$ anonfun $ 3.apply(ClientWrapper.scala:337) .sql.hive.client.ClientWrapper $$ anonfun $ getTableOption $ 1.适用(ClientWrapp er.scala:337)org.apache.spark.sql.hive.client.ClientWrapper $$ anonfun $ getTableOption $ 1.apply(ClientWrapper.scala:332)at org.apache.spark.sql.hive.client.ClientWrapper $ $ anonfun $ withHiveState $ 1.apply(ClientWrapper.scala:290)at org.apache.spark.sql.hive.client.ClientWrapper.liftedTree1 $ 1(ClientWrapper.scala:237)
任何人都可以帮助我导入哪些类来读取hbase表.
hbase ×10
hadoop ×3
cassandra ×2
opentsdb ×2
apache-spark ×1
dns ×1
hivecontext ×1
iot ×1
java ×1
nosql ×1
phoenix ×1
scala ×1
spark-submit ×1