查看版本号对应的java,Hadoop
https://hbase.apache.org/book.html#configuration
下载地址:https://archive.apache.org/dist/hbase/stable/
我下载的版本是stable版本:
cd ~/Downloads/
解压到/usr/local下
sudo tar -zxf ./hbase-2.4.11-bin.tar.gz -C /usr/local
cd /usr/local
sudo mv ./hbase-2.4.11 ./hbase
下面把hbase目录权限赋予给当前用户:houbao更改为当前用户
sudo chown -R houbao ./hbase
vim ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase#新添加的
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_321
export SCALA_HOME=/usr/local/scala
export SPARK_HOME=/usr/local/spark
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
#新修改的
export PATH=${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HBASE_HOME}/bin:$PATH
编辑完成后,再执行source命令使上述配置在当前终端立即生效,命令如下:
source ~/.bashrc
hbase version
sudo vim /usr/local/hbase/conf/hbase-env.sh
配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.
HBASE_CLASSPATH设置为本机HBase安装目录下的conf目录(即/usr/local/hbase/conf)
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_321
export HBASE_MANAGES_ZK=true
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
用命令vi打开并编辑hbase-site.xml,命令如下:
sudo vim /usr/local/hbase/conf/hbase-site.xml
修改hbase.rootdir,指定HBase数据在HDFS上的存储路径;将属性hbase.cluter.distributed设置为true。假设当前Hadoop集群运行在伪分布式模式下,在本机上运行,且NameNode运行在9000端口。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/usr/local/hbase/tmp</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式.
另外,上面配置文件中,hbase.unsafe.stream.capability.enforce这个属性的设置,是为了避免出现启动错误。也就是说,如果没有设置hbase.unsafe.stream.capability.enforce为false,那么,在启动HBase以后,会出现无法找到HMaster进程的错误,启动后查看系统启动日志(/usr/local/hbase/logs/hbase-hadoop-master-ubuntu.log),会发现如下错误:
2020-01-25 15:04:56,916 ERROR [master/localhost:16000:becomeActiveMaster] master.HMaster: Failed to become active master
java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it.
启动hadoop
start-dfs.sh
输入命令jps,能看到NameNode,DataNode和SecondaryNameNode都已经成功启动,表示hadoop启动成功,截图如下:
第二步:切换目录至/usr/local/hbase(如果按照我的要求配置了环境变量,可以不切换);再启动HBase.命令如下:
start-hbase.sh
选择yes
输入jps
进入shell界面
hbase shell
今天关闭HBase时,输入stop-hbase.sh一直处于等待状态
解决方法:
先输入
hbase-daemon.sh stop master
hbase-daemons.sh stop regionserver
再输入:stop-hbase.sh就可以关闭HBase集群了。
HBase中用create命令创建表,具体如下:进入shell
hbase shell
create 'student','Sname','Ssex','Sage','Sdept','course'
报错
ERROR: KeeperErrorCode = NoNode for /hbase/master
端口对应起来:9000
ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
原因是由于hadoop的安全模式打开了,解决方法:
hdfs dfsadmin -safemode leave
hdfs dfsadmin -safemode leave
搜了一圈,有人说是Hadoop版本3.3.x高了导致的兼容问题,要么就是hdfs进入安全模式了,但是实际上通过对hbase/conf/hbase-env.sh修改,去掉注释export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"后,可以再试试,成功执行。
————————————————
版权声明:本文为CSDN博主「网名很难取诶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011946741/article/details/122477894
describe 'student'
put 'student','95001','Sname','LiYing'
put 'student','95001','course:math','80'
2.删除数据
delete 'student','95001','Ssex'
查验
get 'student','95001'
\2. deleteall命令
deleteall 'student','95001'
\2. scan命令
scan 'student'
disable 'student'
drop 'student'
查询表的历史版本,需要两步。
1、在创建表的时候,指定保存的版本数(假设指定为5)
create 'teacher',{NAME=>'username',VERSIONS=>5}
2、插入数据然后更新数据,使其产生历史版本数据,注意:这里插入数据和更新数据都是用put命令
put 'teacher','91001','username','Mary'
put 'teacher','91001','username','Mary1'
put 'teacher','91001','username','Mary2'
put 'teacher','91001','username','Mary3'
put 'teacher','91001','username','Mary4'
put 'teacher','91001','username','Mary5'
3、查询时,指定查询的历史版本数。默认会查询出最新的数据。(有效取值为1到5)
get 'teacher','91001',{COLUMN=>'username',VERSIONS=>5}
最后退出数据库操作,输入exit命令即可退出,注意:这里退出HBase数据库是退出对数据库表的操作,而不是停止启动HBase数据库后台运行。
exit
创建HBase项目:
创建包:
new class文件ExampleForHBase
源码:
package com.houbao;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class ExampleForHBase {
public static Configuration configuration;
public static Connection connection;
public static Admin admin;
public static void main(String[] args)throws IOException{
init();
createTable("student",new String[]{"score"});
insertData("student","zhangsan","score","English","69");
insertData("student","zhangsan","score","Math","86");
insertData("student","zhangsan","score","Computer","77");
getData("student", "zhangsan", "score","English");
close();
}
public static void init(){
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");
try{
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
}catch (IOException e){
e.printStackTrace();
}
}
public static void close(){
try{
if(admin != null){
admin.close();
}
if(null != connection){
connection.close();
}
}catch (IOException e){
e.printStackTrace();
}
}
public static void createTable(String myTableName,String[] colFamily) throws IOException {
TableName tableName = TableName.valueOf(myTableName);
if(admin.tableExists(tableName)){
System.out.println("talbe is exists!");
}else {
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
for(String str:colFamily){
ColumnFamilyDescriptor family =
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(str)).build();
tableDescriptor.setColumnFamily(family);
}
admin.createTable(tableDescriptor.build());
}
}
public static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Put put = new Put(rowKey.getBytes());
put.addColumn(colFamily.getBytes(),col.getBytes(), val.getBytes());
table.put(put);
table.close();
}
public static void getData(String tableName,String rowKey,String colFamily, String col)throws IOException{
Table table = connection.getTable(TableName.valueOf(tableName));
Get get = new Get(rowKey.getBytes());
get.addColumn(colFamily.getBytes(),col.getBytes());
Result result = table.get(get);
System.out.println(new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes())));
table.close();
}
}
java compiler 更改为1.8
增加jar包:“Add External JARs…”按钮。
1,进入到“/usr/local/hbase/lib”目录,选中该目录下的所有jar文件(注意,不要选中client-facing-thirdparty、ruby、shaded-clients和zkcli这四个目录),然后,点击界面底部的“OK”按钮。
2.然后,在“JAR Selection”界面中(如下图所示),点击进入到“client-facing-thirdparty”目录下。
run as java application
程序运行成功以后,如下图所示,会在运行结果中出现“69”。
这时,可以到HBase Shell交互式环境中,使用如下命令查看student表是否创建成功:
hbase> list
再在HBase Shell交互式环境中,使用如下命令查看student表中的数据:
hbase> scan ‘student’
stop-hbase.sh
查看进程
关闭Hadoop
stop-dfs.sh
查看进程
jps
果中出现“69”。
这时,可以到HBase Shell交互式环境中,使用如下命令查看student表是否创建成功:
hbase> list
再在HBase Shell交互式环境中,使用如下命令查看student表中的数据:
hbase> scan ‘student’
stop-hbase.sh
查看进程
关闭Hadoop
stop-dfs.sh
查看进程
jps
文章浏览阅读7.4k次,点赞2次,收藏5次。http://www.cnblogs.com/craftor/archive/2012/06/28/2567259.html大多数人都知道,PADS中导入DXF文件,然后转换成板框,是很方便的。AD也同样可以做到。PADS导入DXF见:http://www.cnblogs.com/craftor/archive/2012/01/14/2322446.html 1_ad24导入的孔怎么转换为板框的孔
文章浏览阅读1.6k次。1.概述官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-malformed.html#ignore-malformed我们经常碰到一些内容不规范或者格式不对的数据,例如某个IP字段的里出现"UNKNOWN",某个数字字段出现"-"。如果在这些字段上已经设置了明确的类型,比如"ip"或者"float",字段中出现了非该类型的值,ES会抛出异常并丢弃整条数据。我们可以在该字段上设置"ignore_malf._es 查询时忽略格式不正确的ip
文章浏览阅读1.9k次。通常来说,在一个项目中我们会使用到多个dao,比如在一个信息管理系统中,有 UserDao/ MessageDao等; 每个 dao 都有相同的 CRUD 代码,每个 dao 去写也是可以的,但是代码量会偏多,代码结构不够好,显得比较臃肿;实际上可以通过泛型来抽取出一个 BaseDao,这个 BaseDao 包含了各个 dao 的增删改查代码,创建新的 dao 时继承BaseDao,就可以减少很_优化ssm项目的dao层
文章浏览阅读1.7k次。Bookmarks Organizer Chrome开发背景很多人都会随手保存书签方便下次使用,但你书签保存多了就知道什么叫做灾难了,很多的书签、还有一些是重复或者链接失效的书签,找起来特别麻烦,书签太多,不好管理怎么办?Bookmarks Organizer帮助你管理你的书签。Bookmarks Organizer有适用于Chrome浏览器和firefox浏览器两种,虽然名字相同,而且同样是管理..._bookmarks organizer
文章浏览阅读112次。MultiClassifier: A combination of DPI and ML for application-layer classification in SDN来源:International Conference on Systems and Informatics发表时间:2014针对问题在传统校园网络中,应用层分类是通过支持应用层分类的特定设备(防火墙)来实现,但是..._sdn引用文献
文章浏览阅读3k次,点赞5次,收藏9次。硬件、SDK、插件准备见这个文章:Unity体感应用开发——Kinect V2 获取彩色摄像头数据抠像,英文叫BackgroundRemoval。即背景移除。在SDK Browser的demo里面叫Coordinate Mapping,即坐标映射。从名字可以看出它的目的和原理,目的就是将图像中的人物与背景分离,将人物图像剥离出来。实现的原理就是将BodyIndexImage(一个512..._unity kinect抠像
文章浏览阅读320次。转载自:http://database.ctocio.com.cn/tips/14/8106014.shtml在Oracle 里,如果你想编写存储过程你当然应该使用PL/SQL包。在这篇文章里,假设你一般了解PL/SQL 和非常熟悉PL/SQL 包。这篇文章关注于一个令人讨厌的错误,这个错误使许多使用PL/SQL以及使用API(例如JDBC)从应用层调用它的开发人员很苦恼。【IT专家网独家】导言在..._not executed, altered or dropped package body \"egp.egrb_policy_pkg\
文章浏览阅读370次。前言:@Api,@ApiOperation,@ApiImplicitParam,@ApiModelProperty,@ApiIgnore正文:一,Controller层@ApiIgnore@CrossOrigin(origins= "*")@RestController@Api(tags= {"文章接口"})public classArticleController {@ApiIgnore@Api..._io.swagger.v3.oas @apiignore
文章浏览阅读344次。问题因此,您想(分别)记录一个进程或子进程的stdout和stderr,如果您未记录任何内容,则输出不会与在终端中看到的输出不同。似乎很简单,不是吗?不幸的是,似乎不可能为这个问题写一个通用的解决方案,该解决方案适用于任何给定的流程...背景管道重定向是一种分离stdout和stderr的方法,允许您分别记录它们。不幸的是,如果将stdout / err更改为管道,则该过程可能会检测到该管道不是t..._subprocess.popen stdout和stderr定向到同一输出
文章浏览阅读2.1k次。jQuery学习点滴 在学习之余对jquery提供的方法进行分类总结,下文有些抄摘w3cschool,只为以后使用起来方便查找!jQuery 语法jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。基础语法是:$(selector).action()美元符号定义 jQuery 选择符(selector)“查询”和“查找” HTML 元素 jQ_"$(\"p\").css(\"color\")"
文章浏览阅读675次。Note: 只支持Android 6.0 以上dependencies {def security_version = "1.0.0-alpha02"implementation "androidx.security:security-crypto:$security_version"}文件内容操作e.g : 文件写入private fun writeFile(){val key = Master..._androidx.security:security-cypto
文章浏览阅读516次。我们在多模块项目开发过程中,会遇到这样的场景,工程里依赖了一个自己的或者其他同事的 模块,有时候为了开发调试方便,经常会把 改为本地源码依赖,开发完毕并提交的时候,会再修改回 依赖,这样就会很不方便,开发流程图示如下:一开始我们通过在 的 里的 判断如果是需要本地依赖的 ,就替换为 依赖,伪代码如下:这样就可以不用每次提交代码还要修改回 依赖,但是如果其他模块如果也依赖了该 模块,就会出现问题,虽然可以继续修改其他模块里的依赖方式,但是这样就会有侵入性,而且不能彻底解决问题,仍然有可能出_dependencysubstitution