我们有一个用PHP开发的MySQL网站,当流量增加时有时会遇到问题.我们几乎以各种方式优化了网站以处理更多请求,但在高峰时段仍然面临问题.
我的一位朋友建议使用HBase/MongoDB作为后端重建网站以提高性能.他还建议,如果我们重建它,我们可以轻松转向云服务.但我们需要学习整个事物并重新开发它.
这样做更好吗?
检查Hbase表是否存在的最快方法是什么?看看这个api:
http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/HBaseAdmin.html以下 哪项是最快的:
使用#4,您将获得所有表的列表并通过它进行迭代,并比较其中一个表是否与您的表名匹配.
还是有另一种更聪明的方式?
我正在寻找可以帮助我聚合实时日志的工具/数据库/解决方案,并且可以实时查询它们.
基本要求是能够尽快交付结果,请记住,可能有许多事件要查询(可能是数十亿),但是日志会有很多"列",每个查询都会在这些列上设置一些条件,所以最终结果将是某种聚合,或者只返回一小部分行.
现在我正在看HDFS + HBase,这似乎是一个很好的解决方案.还有其他选择吗?你能推荐一下吗?
我有一组需要索引的200M文档.每个文档都有一个自由文本和一组额外的稀疏元数据信息(100多列).
似乎自由文本索引的正确工具是Lucene,而结构化稀疏元数据的正确工具是HBase.
我需要查询数据并在自由文本搜索结果和结构化数据结果之间加入(例如,在其文本中获得所有具有短语"早安"的书籍于1980年首次发布).
我应该查看哪些工具/机制来加入结构化和未经检查的查询?结果可能包括数百万条记录(加入前后)
谢谢萨尔
如果Hadoop作业正在运行或正在进行中,如果我向HDFS或Hbase写入内容,那么该数据将对集群中的所有节点可见
1)立即?
2.)如果没有立即再经过多少时间?
3.)或者时间真的无法确定?
我正在尝试以编程方式创建HFiles并将它们加载到正在运行的HBase实例中.我发现很多信息的HFileOutputFormat,并在LoadIncrementalHFiles
我设法创建了新的HFile,将其发送到集群.在群集Web界面中,将显示新的存储文件,但新的键范围不可用.
InputStream stream = ProgrammaticHFileGeneration.class.getResourceAsStream("ga-hourly.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line = null;
Map<byte[], String> rowValues = new HashMap<byte[], String>();
while((line = reader.readLine())!=null) {
String[] vals = line.split(",");
String row = new StringBuilder(vals[0]).append(".").append(vals[1]).append(".").append(vals[2]).append(".").append(vals[3]).toString();
rowValues.put(row.getBytes(), line);
}
List<byte[]> keys = new ArrayList<byte[]>(rowValues.keySet());
Collections.sort(keys, byteArrComparator);
HBaseTestingUtility testingUtility = new HBaseTestingUtility();
testingUtility.startMiniCluster();
testingUtility.createTable("table".getBytes(), "data".getBytes());
Writer writer = new HFile.Writer(testingUtility.getTestFileSystem(),
new Path("/tmp/hfiles/data/hfile"),
HFile.DEFAULT_BLOCKSIZE, Compression.Algorithm.NONE, KeyValue.KEY_COMPARATOR);
for(byte[] key:keys) {
writer.append(new KeyValue(key, "data".getBytes(), "d".getBytes(), rowValues.get(key).getBytes()));
}
writer.appendFileInfo(StoreFile.BULKLOAD_TIME_KEY, Bytes.toBytes(System.currentTimeMillis()));
writer.appendFileInfo(StoreFile.MAJOR_COMPACTION_KEY, Bytes.toBytes(true)); …Run Code Online (Sandbox Code Playgroud) 我正在向YARN(在spark 2.1.1 + kafka 0.10.2.1上)提交一份工作,该工作连接到一个安全的hbase集群.当我在"本地"模式下运行时,这项工作表现得很好(spark.master = local [*]).
但是,只要我将master作为YARN提交作业(并将部署模式作为客户端),我就会看到以下错误消息 -
Caused by: javax.security.auth.login.LoginException: Unable to obtain password from user
Run Code Online (Sandbox Code Playgroud)
我正在按照hortonworks的建议向纱线集群提供关于HBase和keytab等的信息.遵循这篇kb文章 - https://community.hortonworks.com/content/supportkb/48988/how-to-run-spark-job-to -interact与-固定-hbas.html
什么指针可能会发生什么?
登录HBase的机制:
UserGroupInformation.setConfiguration(hbaseConf)
val keyTab = "keytab-location")
val principal = "kerberos-principal"
val ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI(principal, keyTab)
UserGroupInformation.setLoginUser(ugi)
ugi.doAs(new PrivilegedExceptionAction[Void]() {
override def run: Void = {
hbaseCon = Some(ConnectionFactory.createConnection(hbaseConf))
null
}
})
Run Code Online (Sandbox Code Playgroud)
此外,我尝试了登录的替代机制,如下所示:
UserGroupInformation.loginUserFromKeytab(principal, keyTab)
connection=ConnectionFactory.createConnection(hbaseConf)
Run Code Online (Sandbox Code Playgroud)
请建议.
hbase kerberos apache-spark hadoop2 spark-structured-streaming
我最近遇到了BufferedMutator类的HBase,它可以用于批量插入和删除.我以前使用List来放置数据hTable.put(putList)以做同样的事情.对我的代码进行基准测试似乎并没有显示出太大的差异,而是我在做的事情mutator.mutate(putList);.使用BufferedMutator而不是PutList有显着的性能提升吗?
什么时候创建多个表而不是创建具有大量列的单个表是有意义的。我知道表通常只有几个列族(1-2),每个列族可以支持1000多个列。
当HBase在单个表中可能包含大量列的情况下表现良好时,何时创建单独的表才有意义?
是否有任何具有以下行为的扫描/过滤器API?
给定时间范围,我希望扫描仪包含来自HFiles的数据超出范围,包括在HFiles中的行键在范围内.我们的想法是扫描所有HFile的内存索引,但只从磁盘中获取来自HFile的rowkeys的数据.
例如,如果HFile1在范围内并且HFile2超出范围,并且rowkey1有任何数据HFile1,我想获取rowkey1from的所有列HFile2,就好像它在范围内一样.另一方面,如果rowkey2包含HFile2但不包括在内HFile1,索引扫描程序应该跳到下一行键.
用例是在最后X小时内加载已修改的整行(即使只在一列上),从而避免对冗余数据进行全面扫描或任何磁盘扫描.这将集成到Spark/MR应用程序中,可能基于TableSnapshotInputFormat,所以我想我可以为HRegion,HStore或其他任何东西发送一些自定义代码,如果有的话.
非常感谢