我正在构建一个Hadoop(0.20.1)mapreduce作业,它使用HBase(0.20.1)作为数据源和数据接收器.我想用Python编写这个工作,它要求我使用hadoop-0.20.1-streaming.jar来传输数据到我的Python脚本之间.如果数据源/接收器是HDFS文件,这可以正常工作.
Hadoop是否支持从/向HBase流式传输mapreduce?
我是OpenTSDB的新手.我以某种方式设法安装和配置OpenTSDB,但我不知道如何从客户端将数据放入OpenTSDB.你们有人可以帮助我吗?
在我们无限的智慧中,我们决定用中间的标签键入我们的行:
item_id <tab> location
Run Code Online (Sandbox Code Playgroud)
例如:
000001 http://www.url.com/page
Run Code Online (Sandbox Code Playgroud)
使用Hbase Shell,我们无法执行get命令,因为选项卡字符无法在输入行中正确写入.我们尝试了
get 'tableName', '000001\thttp://www.url.com/page'
Run Code Online (Sandbox Code Playgroud)
没有成功.我们应该做什么?
我正在尝试学习Hadoop,并且我已经在Hadoop权威指南中找到了HBase部分.我试图启动HBase并得到错误.有人可以给我一步一步的指导吗?
opel@ubuntu:~$ zkServer.sh start
JMX enabled by default
Using config: /home/opel/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
opel@ubuntu:~$ start-hbase.sh
starting master, logging to /home/opel/hbase-0.94.20/logs/hbase-opel-master-ubuntu.out
opel@ubuntu:~$ hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.20, r09c60d770f2869ca315910ba0f9a5ee9797b1edc, Fri May 23 22:00:41 PDT 2014
hbase(main):001:0> status
14/06/02 22:40:44 ERROR client.HConnectionManager$HConnectionImplementation: Check the value configured in 'zookeeper.znode.parent'. There could be a mismatch with the one configured in the master.
14/06/02 22:40:45 ERROR client.HConnectionManager$HConnectionImplementation: Check the …Run Code Online (Sandbox Code Playgroud) 我正在通过oozie java动作运行测试hbase java程序.遇到以下错误:
Failing Oozie Launcher, Main class [HbaseTest], main() threw exception, org/apache/hadoop/hbase/HBaseConfiguration
java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
at HbaseTest.main(HbaseTest.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:495)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:417)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
at org.apache.hadoop.mapred.Child.main(Child.java:262)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 14 more
Run Code Online (Sandbox Code Playgroud)
该程序从命令行正确运行:
java -cp `hbase classpath` HbaseTest
Run Code Online (Sandbox Code Playgroud)
有没有办法可以将'hbase classpath'的输出传递给oozie java动作.我不想将hbase jar复制到工作流的lib目录,因为这将是一个维护开销.
以下是来自的java动作workflow.xml:
<java>
<job-tracker>${jobTracker}</job-tracker> …Run Code Online (Sandbox Code Playgroud) 我使用我的API日志来提取如下信息:
我提取的几乎所有信息都取决于时间戳.实际上我使用MongoDB并添加了时间戳作为索引(对于80GB,索引大小为12GB).
我建议迁移到cassandra或Hbase.我想知道哪个更好用于我的用例:
感谢您分享您的观点或经验.
我使用的是Spark 1.2.1,Hbase 0.98.10和Hadoop 2.6.0.从hbase检索数据时,我得到了一个零点异常.在下面找到堆栈跟踪.
[sparkDriver-akka.actor.default-dispatcher-2] DEBUG NewHadoopRDD - 无法使用InputSplit#getLocationInfo.java.lang.NullPointerException:在scala.collection.mutable的scala.collection.mutable.ArrayOps $ ofRef $ .length $ extension(ArrayOps.scala:114)〜[scala-library-2.10.4.jar:na]中为null.在Scala.collection.IndexedSeqOptimized $ class.foreach(IndexedSeqOptimized.scala:32)〜[scala-library-2.10]的ArrayOps $ ofRef.length(ArrayOps.scala:114)〜[scala-library-2.10.4.jar:na] .4.jar:na] at org.apache.spark.rdd.HadoopRDD的scala.collection.mutable.ArrayOps $ ofRef.foreach(ArrayOps.scala:108)〜[scala-library-2.10.4.jar:na] $ .convertSplitLocationInfo(HadoopRDD.scala:401)〜[spark-core_2.10-1.2.1.jar:1.2.1]在org.apache.spark.rdd.NewHadoopRDD.getPreferredLocations(NewHadoopRDD.scala:215)〜[spark -core_2.10-1.2.1.jar:1.2.1]在org.apache.spark.rdd.RDD $$ anonfun $ preferredLocations $ 2.apply(RDD.scala:234)[spark-core_2.10-1.2.1 .jar:1.2.1]在org.apache.spark.rdd.RDD $$ anonfun $ preferredLocations $ 2.apply(RDD.scala:234)[spark-core_2.10-1.2.1.jar:1.2.1] at at scala.Option.getOrElse(Option.scala:120)[scala-library-2.10.4.jar:na] 在org.apache.spark.rdd.RDD.preferredLocations(RDD.scala:233)[spark-core_2.10-1.2.1.jar:1.2.1] org.apache.spark.scheduler.DAGScheduler.org $ apache $ spark $ scheduler $ DAGScheduler $$ getPreferredLocsInternal(DAGScheduler.scala:1326)[spark-core_2.10-1.2.1.jar:1.2.1] org.apache.spark.scheduler.DAGScheduler $$ anonfun $ org $ apache $ spark $ scheduler $ DAGScheduler $$ getPreferredLocsInternal $ 2 $$ anonfun $ apply $ 2.apply $ mcVI …
我正在做一个批处理作业,以通过HTableInterface将一批对象放入HBase。有两种API方法,即HTableInterface.put(List)和HTableInterface.put(Put)。
我想知道,对于相同数量的Put对象,批处理是否比逐个放置更快?
另一个问题是,我放置了一个非常大的Put对象,这导致作业失败。放置对象的大小似乎受到限制。可以多大?
我正在使用Java HBase API从Hbase获取值.这是我的代码.
public class GetViewFromHbaseBolt extends BaseBasicBolt {
private HTable table;
private String zkQuorum;
private String zkClientPort;
private String tableName;
public GetViewFromHbaseBolt(String table, String zkQuorum,
String zkClientPort) {
this.tableName = table;
this.zkQuorum = zkQuorum;
this.zkClientPort = zkClientPort;
}
@Override
public void prepare(Map config, TopologyContext context) {
try {
table = getHTable();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void execute(Tuple tuple, BasicOutputCollector collector) {
try {
if (tuple.size() > 0) {
Long dtmid = tuple.getLong(0);
byte[] …Run Code Online (Sandbox Code Playgroud) 我从 cloudera 5.3.3 发行版安装了 hbase,当我运行 hbase 时,一切似乎都工作正常......
当我尝试通过 /etc/hbase/conf/hbase-site.xml 分配 hbase.master.port 时,它不会从那里选择它。
我从主节点信息http://MASTERNODE:60010/conf看到这一点
<property>
<name>hbase.master.port</name>
<value>0</value>
<source>programatically</source>
</property>
Run Code Online (Sandbox Code Playgroud)
hbase发行版:0.98.6-cdh5.3.3
这个“以编程方式”是什么意思以及如何禁用/覆盖它?