标签: hbase

如何在数据库中增加读取查询/秒?

我是数据库的新手,但我遇到了一个我似乎无法弄清楚的问题.提前抱歉,如果这太长了,我想总结我所有的努力,以便你知道到目前为止我做了什么.我有一个应用程序有一些逻辑,然后对数据库进行3次查询.第一个查询检查是否存在值,第二个检查是否存在另一个(相关)值,第三个查询是否存在,如果不存在则添加相关值.想想我对数字2进行查询,如果存在,我检查3并在需要时添加它.我做这个循环很多次(我正在查看整体查询,但我怀疑这个程序比写入更重读).我曾经在我的程序中只使用哈希表但是由于我添加了多个进程,因此我遇到了同步问题,因此我决定使用数据库,以便多个内核可以同时处理这个问题.

起初我试过,mysql并使用了一个内存存储引擎(它可能都适合内存),制作了一个复合主键来复制我在程序中的字典,索引它,禁用锁定但我只能获得大约11,000个查询/第二个来自它.

然后我尝试了redis(听说它就像memcache)并创建了我之前拥有的相同键/值dict(这是实际模式我可以使两列彼此独特吗?或者在redis中使用复合主键?)并删除所有fsync的东西所以它希望永远不会击中硬盘i/o但我仍然只能获得大约30,000个查询/秒.我通过让程序在ramdrive等中运行来查看系统改进(我正在使用linux),但结果仍然相似.

我有一个安装脚本,并尝试使用高cpu实例在ec2上执行此操作,但结果类似(对于两个解决方案,查询都不会增加太多).我有点在我的智慧结束,但不想放弃,因为我在stackoverflow上读到人们谈论他们如何在独立上获得100,000k +查询.我觉得我的数据模型非常简单(两列INT或我可以使它成为一个字符串,两个INT组合在一起,但这似乎没有慢下来)和一旦数据被创建(并由另一个进程查询)我有不需要持久性(这也是我试图不写入硬盘的原因).我缺少什么设置,允许开发人员获得这种性能?在创建表之外是否需要特殊配置?或者是通过分布式数据库获得此类性能的唯一方法?我知道问题出在数据库中,因为当我关闭数据库中间进程时,我的python应用程序在每个核心上运行100%(尽管它没有写入),它让我觉得等待的过程(对于读取,我怀疑)是什么减慢了它(我有足够的CPU /内存,所以我想知道为什么它没有最大化,我有50%的CPU和80%的我的内存免费在这些工作,所以我不知道这是怎么回事).

我有mysql,redis和hbase.希望我能做些什么来让这些解决方案中的一个能够像我想的那样快速地工作但是如果没有我可以解决任何问题(它实际上只是一个临时散列表,分布式过程可以查询).

我能做什么?

谢谢!

更新:根据评论中的要求,这里是一些代码(在特定应用程序逻辑之后似乎正常):

    cursor.execute(""" SELECT value1 FROM data_table WHERE key1='%s' AND value1='%s' """ % (s - c * x, i))
    if cursor.rowcount == 1:
       cursor.execute(""" SELECT value1 FROM data_table WHERE key1='%s' AND value1='%s' """ % (s, i+1))
       if cursor.rowcount == 0:
           cursor.execute (""" INSERT INTO data_table (key1, value1) VALUES ('%s', '%s')""" % (s, i+1))
           conn.commit() #this maybe not needed
           #print 'commited ', c
Run Code Online (Sandbox Code Playgroud)

上面是在mysql上进行3次查找的代码.我也尝试过一次大查找(但实际上速度较慢):

       cursor.execute ("""
 INSERT INTO data_table (key1, value1) …
Run Code Online (Sandbox Code Playgroud)

mysql database hbase redis

9
推荐指数
1
解决办法
878
查看次数

Hbase列系列

Hbase文档说,避免创建超过2-3个列系列,因为Hbase不能很好地处理超过2-3个列族.其原因是压实和冲洗,因此IO.但是,如果我的所有列总是被填充(对于每一行),那么我认为这种推理并不重要,因此,考虑到我对列的访问是完全随机的(我想访问任何列的组合) - 我可以有一个列族 - 一列配置(有效地尝试使其成为纯柱状).

有许多博客/维基解释这一点,但它们似乎都相互矛盾,并增加了更多的混淆.我似乎无法消化Hbase更喜欢一个列系列的事实,那么调用的重点是列存储?

hbase

9
推荐指数
1
解决办法
8383
查看次数

Hadoop和HBase

嗨,我是hbase和hadoop的新手.我找不到为什么我们使用hadoop和hbase.我知道hadoop是一个文件系统,但我读到我们可以使用没有hadoop的hbase,为什么我们使用hadoop?
谢谢

hadoop hbase

9
推荐指数
2
解决办法
2万
查看次数

将csv数据加载到Hbase中

我是hadoop和hbase的新手,并且在我发现的每个教程中都有一些概念性的问题让我感到沮丧.

我在win 7系统上的ubuntu VM中的单个节点上运行hadoop和hbase.我有一个csv文件,我想加载到一个单独的hbase表.

列是:loan_number,borrower_name,current_distribution_date,loan_amount

我知道我需要写一个MapReduce作业来将这个csv文件加载到hbase中.以下教程描述了编写此MapReduce作业所需的Java. http://salsahpc.indiana.edu/ScienceCloud/hbase_hands_on_1.htm

我缺少的是:

我在哪里保存这些文件以及在哪里编译它们?我应该在运行visual studio 12的win 7机器上编译它,然后将它移动到ubuntu vm吗?

我读了这个问题和答案,但我想我仍然缺少基础知识:使用MapReduce将CSV文件加载到Hbase表中

我找不到涵盖这些基本hadoop/hbase物流的任何内容.任何帮助将不胜感激.

hadoop hbase

9
推荐指数
1
解决办法
3万
查看次数

HBase:put/get如何知道要写入哪个区域服务器?

在HBase中,put/get操作如何知道该行应该写入哪个区域服务器?如果要读取多行,如何联系多个区域服务器并检索结果?

hadoop hbase bigdata nosql hdfs

9
推荐指数
1
解决办法
3679
查看次数

如何使用HBASE Shell获取一行,其中rowkey是十六进制的?

如果我有一个十六进制的rowkey,比如x00\x01,我get在HBASE shell中怎么做?

hbase(main):004:0> scan 'tsdb-tree'
ROW                 COLUMN+CELL
\x00\x01            column=t:tree, timestamp=1379421652764, value={"name":"...
Run Code Online (Sandbox Code Playgroud)

hbase

9
推荐指数
1
解决办法
2万
查看次数

HBase扫描性能

我正在执行范围扫描,它给了我500k记录.如果我设置scan.setCaching(100000)它只需不到一秒钟,但如果scan.setCaching(100000)没有设置它需要将近38秒.

如果我设置scan.setBlockCache(false)scan.setCaching(100000)会发生什么?这些行是否会被缓存?

我在第一次扫描后丢弃了操作系统缓存,但扫描记录的时间没有变化.为什么?

那我该如何检查读取性能呢?

caching hadoop hbase database-scan

9
推荐指数
2
解决办法
1万
查看次数

连接到Docker中运行的HBase

我无法连接到Windows上的Docker中运行的HBase(banno/hbase-standalone映像).但是,我可以连接到本地安装的HBase.

banno/hbase-standalone图像使用以下命令运行:

docker run -d -p 2181:2181 -p 60000:60000 -p 60010:60010 -p 60020:60020 -p 60030:60030 banno/hbase-standalone
Run Code Online (Sandbox Code Playgroud)

我还设置了端口转发boot2docker-vm(在Windows上运行时需要): 在此输入图像描述

我可以成功telnet到我的localhost上的所有端口.

接下来,这是我们在测试中使用的代码示例:

Configuration config = HBaseConfiguration.create();
config.clear();
config.setInt("timeout", 12000);
config.set("zookeeper.znode.parent", "/hbase");
config.set("hbase.zookeeper.quorum", "127.0.0.1");
config.set("hbase.zookeeper.property.clientPort", "2181");
config.set("hbase.master", "127.0.0.1:60000");

final Configuration configuration = HBaseConfiguration.create(config);

JobDefinition.Buildable.dumpProperties(configuration, newArrayList("hbase.*"));

HBaseAdmin.checkHBaseAvailable(config);
Run Code Online (Sandbox Code Playgroud)

这导致以下异常

Exception in thread "main" org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.net.UnknownHostException: unknown host: a3e6c240af20
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$StubMaker.makeStub(HConnectionManager.java:1651)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(HConnectionManager.java:1677)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveMasterService(HConnectionManager.java:1885)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.isMasterRunning(HConnectionManager.java:900)
    at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2366)
    at com.xxx.compute.hadoop.jobs.transaction.OurTest.main(OurTest.java:24)
Caused by: com.google.protobuf.ServiceException: java.net.UnknownHostException: unknown host: a3e6c240af20
    at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1674)
    at …
Run Code Online (Sandbox Code Playgroud)

java windows hbase nat docker

9
推荐指数
1
解决办法
3584
查看次数

我怎样才能预先拆分hbase

我将数据存储在具有5个区域服务器的hbase中.我使用url的md5哈希作为我的行键.目前,所有数据仅存储在一个区域服务器中.所以我想预先拆分区域,以便数据在所有区域服务器上统一分布,这样数据将统一到达每个区域服务器.我想将数据拆分为行键的第一个字符.第一个字符是从0到f(16个字符).就像rowkey从0到3开始的数据将在第一个区域服务器中,3-6在第二个,6-9在第3个,ad在第4个,df在第5个.我该怎么做 ?

hadoop hbase

9
推荐指数
2
解决办法
1万
查看次数

如何配置Hadoop/HDP组件的日志记录?

我有一个HDP 2.4集群,其中包含以下服务/组件:

  1. HBase的
  2. 卡夫卡
  3. MapReduce2
  4. 风暴
  5. Oozie的
  6. 支持服务,如Zookeeper,Ambari,Yarn,HDFS等.

我一直在寻找这几天,并希望得到一些帮助.我有以下两个问题:

  1. 如何在应用程序级别(我们使用log4j)和守护程序级别为下面提到的所有服务配置日志记录?
  2. 在一个合并位置查看这些服务的所有应用程序级别日志的最佳做法是什么?Ambari有什么可以提供或我们需要第三方包(哪些是好的)?

非常感谢您提供的任何帮助!

java hadoop hbase log4j hortonworks-data-platform

9
推荐指数
1
解决办法
1124
查看次数