基础概念
Coprocessor
Coprocessor
其实是一个类似 MapReduce
的分析组件,不过它极大简化了 MapReduce
模型。将请求独立地在各个 Region
中并行地运行,并提供了一套框架让用户灵活地自定义 Coprocessor
编程技巧
充分利用好 CellUtil
CellUtil.matchingFamily(cell, cf) && CellUtil.matchingQualifier(cell, col)
发挥好协处理的并行计算能力
static String getStartKeyPrefix(HRegion region) {
if (region == null ) throw new RuntimeException("Region is null!" );
byte [] startKey = region.getStartKey();
if (startKey == null || startKey.length == 0 ) return "00" ;
String startKeyStr = Bytes.toString(startKey);
return isEmpty(startKeyStr) ? "00" : startKeyStr.substring(0 , 2 );
}
private static boolean isEmpty (final String s) {
return s == null || s.length() == 0 ;
}
处理好协处理器程序里的异常
如果在协处理器里面有异常被抛出,并且 hbase.coprocessor.abortonerror
参数没有开启,那么,该协处理器会直接从被加载的环境中被删除掉。否则,则需要看异常类型,如果是 IOException
类型,则会直接被抛出;如果是 DoNotRetryIOException
类型,则不做重试,抛出异常。否则,默认将会尝试 10 次 (硬编码在 AsyncConnectionImpl#RETRY_TIMER
中了)。因此需要依据自己的业务场景,对异常做好妥善的处理
日志打印
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
private static final Log log = LogFactory.getLog(CoprocessorImpl.class.getName());
部署
$ hadoop fs -copyFromLocal /home/hbase/script/coprocessor-0.0 .1 .jar hdfs://yuzhouwan/hbase/coprocessor/
$ hadoop fs -ls hdfs://yuzhouwan/hbase/coprocessor/
$ alter 'yuzhouwan' , METHOD => 'table_att_unset' , NAME =>'coprocessor$1'
$ alter 'yuzhouwan' , METHOD => 'table_att' , 'coprocessor' => 'hdfs://yuzhouwan/hbase/coprocessor/coprocessor-0.0.1.jar|com.yuzhouwan.hbase.coprocessor.Aggregation|111|'
常用命令
集群相关
$ su - hbase
$ start-hbase.sh
$ jps | grep -v Jps
32538 ThriftServer
9383 HMaster
8423 HRegionServer
$ jps | grep -v Jps
24450 jar
21882 HMaster
2296 HRegionServer
14598 ThriftServer
5998 Jstat
$ jps | grep -v Jps
31119 Bootstrap
8775 HMaster
25289 Bootstrap
14823 Bootstrap
12671 Jstat
9052 ThriftServer
26921 HRegionServer
$ jps | grep -v Jps
29356 hbase-monitor-process-0.0 .3 -jar-with-dependencies.jar
11023 Jstat
26135 HRegionServer
$ export -p | egrep -i "(hadoop|hbase)"
declare -x HADOOP_HOME="/home/bigdata/software/hadoop"
declare -x HBASE_HOME="/home/bigdata/software/hbase"
declare -x PATH="/usr/local/anaconda/bin:/usr/local/R-3.2.1/bin:/home/bigdata/software/java/bin:/home/bigdata/software/hadoop/bin:/home/bigdata/software/hive/bin:/home/bigdata/software/sqoop/bin:/home/bigdata/software/hbase/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
$ java -XX:+PrintFlagsFinal -version | grep MaxHeapSize
uintx MaxHeapSize := 32126271488 {product}
java version "1.7.0_60-ea"
Java(TM) SE Runtime Environment (build 1.7 .0 _60-ea-b15)
Java HotSpot(TM) 64 -Bit Server VM (build 24.60 -b09, mixed mode)
$ top
top - 11 :37 :03 up 545 days, 18 :45 , 5 users, load average: 8.74 , 10.39 , 10.96
Tasks: 653 total, 1 running, 652 sleeping, 0 stopped, 0 zombie
Cpu(s): 32.9 %us, 0.7 %sy, 0.0 %ni, 66.3 %id, 0.0 %wa, 0.0 %hi, 0.1 %si, 0.0 %st
Mem: 264484056 k total, 260853032 k used, 3631024 k free, 2235248 k buffers
Swap: 10485756 k total, 10485756 k used, 0 k free, 94307776 k cached
$ java -classpath ~/opt/hbase/soft/yuzhouwan.jar:`hbase classpath` com.yuzhouwan.hbase.MainApp
Usage: hbase [] []
Options:
--config DIR Configuration direction to use. Default: ./conf
--hosts HOSTS Override the list in 'regionservers' file
Commands:
Some commands take arguments. Pass no args or -h for usage.
shell Run the HBase shell
hbck Run the hbase 'fsck' tool
hlog Write-ahead-log analyzer
hfile Store file analyzer
zkcli Run the ZooKeeper shell
upgrade Upgrade hbase
master Run an HBase HMaster node
regionserver Run an HBase HRegionServer node
zookeeper Run a Zookeeper server
rest Run an HBase REST server
thrift Run the HBase Thrift server
thrift2 Run the HBase Thrift2 server
clean Run the HBase clean up script
classpath Dump hbase CLASSPATH
mapredcp Dump CLASSPATH entries required by mapreduce
pe Run PerformanceEvaluation
ltt Run LoadTestTool
version Print the version
CLASSNAME Run the class named CLASSNAME
$ hbase version
2017 -01 -13 11 :05 :07 ,580 INFO [main] util.VersionInfo: HBase 0.98 .8 -hadoop2
2017 -01 -13 11 :05 :07 ,580 INFO [main] util.VersionInfo: Subversion file:///e/hbase_compile/hbase-0.98 .8 -r Unknown
2017 -01 -13 11 :05 :07 ,581 INFO [main] util.VersionInfo: Compiled by 14074019 on Mon Dec 26 20 :17 :32 2016
$ hadoop fs -ls /hbase
drwxr-xr-x - hbase hbase 0 2017 -03 -01 00 :05 /hbase/.hbase-snapshot
drwxr-xr-x - hbase hbase 0 2016 -10 -26 16 :42 /hbase/.hbck
drwxr-xr-x - hbase hbase 0 2016 -12 -19 13 :02 /hbase/.tmp
drwxr-xr-x - hbase hbase 0 2017 -01 -22 20 :18 /hbase/WALs
drwxr-xr-x - hbase hbase 0 2015 -09 -18 09 :34 /hbase/archive
drwxr-xr-x - hbase hbase 0 2016 -10 -18 09 :44 /hbase/coprocessor
drwxr-xr-x - hbase hbase 0 2015 -09 -15 17 :21 /hbase/corrupt
drwxr-xr-x - hbase hbase 0 2017 -02 -20 14 :34 /hbase/data
-rw-r--r-- 2 hbase hbase 42 2015 -09 -14 12 :10 /hbase/hbase.id
-rw-r--r-- 2 hbase hbase 7 2015 -09 -14 12 :10 /hbase/hbase.version
drwxr-xr-x - hbase hbase 0 2016 -06 -28 12 :14 /hbase/inputdir
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :40 /hbase/oldWALs
-rw-r--r-- 2 hbase hbase 345610 2015 -12 -08 16 :54 /hbase/test_bulkload.txt
$ hadoop fs -ls /hbase/WALs
drwxr-xr-x - hbase hbase 0 2016 -12 -27 16 :08 /hbase/WALs/yuzhouwan03,60020 ,1482741120018 -splitting
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :36 /hbase/WALs/yuzhouwan03,60020 ,1483442645857
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan02,60020 ,1483491016710
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan01,60020 ,1483443835926
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :36 /hbase/WALs/yuzhouwan03,60020 ,1483444682422
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :16 /hbase/WALs/yuzhouwan04,60020 ,1485087488577
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan05,60020 ,1484790306754
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan06,60020 ,1484931966988
$ hadoop fs -ls /hbase/WALs/yuzhouwan01,60020 ,1483443835926
-rw-r--r-- 3 hbase hbase 127540109 2017 -03 -01 09 :49 /hbase/WALs/yuzhouwan01,60020 ,1483443835926 /yuzhouwan01%2 C60020%2 C1483443835926.1488330961720
-rw-r--r-- 3 hbase hbase 83 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan01,60020 ,1483443835926 /yuzhouwan01%2 C60020%2 C1483443835926.1488335822133
$ vim /home/hbase/logs/hbase-hbase-regionserver-yuzhouwan03.log
$ echo "" | hbase shell
$ hbase shell ../script/batch.hbase
$ hbase shell
$ status
1 servers, 0 dead, 41.0000 average load
$ zk_dump
HBase is rooted at /hbase
Active master address: yuzhouwan03,60000 ,1481009498847
Backup master addresses:
yuzhouwan02,60000 ,1481009591957
yuzhouwan01,60000 ,1481009567346
Region server holding hbase:meta: yuzhouwan03,60020 ,1483442645857
Region servers:
yuzhouwan02,60020 ,1483491016710
/hbase/replication:
/hbase/replication/peers:
/hbase/replication/peers/1 : yuzhouwan03,yuzhouwan02,yuzhouwan01:2016 :/hbase
/hbase/replication/peers/1 /peer-state: ENABLED
/hbase/replication/rs:
/hbase/replication/rs/yuzhouwan03,60020 ,1483442645857 :
/hbase/replication/rs/yuzhouwan03,60020 ,1483442645857 /1 :
/hbase/replication/rs/yuzhouwan03,60020 ,1483442645857 /1 /yuzhouwan03%2 C60020%2 C1483442645857.1488334114131 : 116838271
/hbase/replication/rs/1485152902048 .SyncUpTool.replication.org,1234 ,1 :
/hbase/replication/rs/yuzhouwan06,60020 ,1484931966988 :
/hbase/replication/rs/yuzhouwan06,60020 ,1484931966988 /1 :
Quorum Server Statistics:
yuzhouwan02:2015
Zookeeper version: 3.4 .6 -1569965 , built on 02 /20 /2014 09 :09 GMT
Clients:
/yuzhouwan:62003 [1 ](queued=0 ,recved=625845 ,sent=625845 )
/yuzhouwan:11151 [1 ](queued=0 ,recved=8828 ,sent=8828 )
Latency min/avg/max: 0 /0 /1
Received: 161
Sent: 162
Connections: 168
Outstanding: 0
Zxid: 0 xc062e91c6
Mode: follower
Node count: 25428
yuzhouwan03:2015
Zookeeper version: 3.4 .6 -1569965 , built on 02 /20 /2014 09 :09 GMT
Clients:
/yuzhouwan:39582 [1 ](queued=0 ,recved=399812 ,sent=399812 )
/yuzhouwan:58770 [1 ](queued=0 ,recved=3234 ,sent=3234 )
$ stop-hbase.sh
增删查改
$ list
TABLE
mytable
yuzhouwan
20 row(s) in 1.4080 seconds
$ create 'yuzhouwan' , {NAME => 'info' , VERSIONS => 3 }, {NAME => 'data' , VERSIONS => 1 }
0 row(s) in 0.2650 seconds
=> Hbase::Table - yuzhouwan
$ put 'yuzhouwan' , 'rk0001' , 'info:name' , 'Benedict Jin'
$ put 'yuzhouwan' , 'rk0001' , 'info:gender' , 'Man'
$ put 'yuzhouwan' , 'rk0001' , 'data:pic' , '[picture]'
$ get 'yuzhouwan' , 'rk0001' , {FILTER => "ValueFilter(=, 'binary:[picture]')" }
COLUMN CELL
data:pic timestamp=1479092170498 , value=[picture]
1 row(s) in 0.0200 seconds
$ get 'yuzhouwan' , 'rk0001' , {FILTER => "QualifierFilter(=, 'substring:a')" }
COLUMN CELL
info:name timestamp=1479092160236 , value=Benedict Jin
1 row(s) in 0.0050 seconds
$ scan 'yuzhouwan' , {FILTER => "QualifierFilter(=, 'substring:a')" }
ROW COLUMN+CELL
rk0001 column=info:name, timestamp=1479092160236 , value=Benedict Jin
1 row(s) in 0.0140 seconds
$ scan 'yuzhouwan' , { TIMERANGE => [0 , 1416083300000 ] }
$ put 'yuzhouwan' , 'rk0003' , 'info:name' , 'asdf2014'
$ scan 'yuzhouwan' , {COLUMNS => 'info' , STARTROW => 'rk0001' , ENDROW => 'rk0003' }
$ put 'yuzhouwan' , 'aha_rk0003' , 'info:name' , 'Jin'
$ scan 'yuzhouwan' , {FILTER => "PrefixFilter('rk')" }
ROW COLUMN+CELL
rk0001 column=data:pic, timestamp=1479092170498 , value=[picture]
rk0001 column=info:gender, timestamp=1479092166019 , value=Man
rk0001 column=info:name, timestamp=1479092160236 , value=Benedict Jin
rk0003 column=info:name, timestamp=1479092728688 , value=asdf2014
2 row(s) in 0.0150 seconds
$ delete 'yuzhouwan' , 'rk0001' , 'info:gender'
$ get 'yuzhouwan' , 'rk0001'
COLUMN CELL
data:pic timestamp=1479092170498 , value=[picture]
info:name timestamp=1479092160236 , value=Benedict Jin
2 row(s) in 0.0100 seconds
$ disable 'yuzhouwan'
$ drop 'yuzhouwan'
行列修改
$ disable 'yuzhouwan'
$ alter 'yuzhouwan' , NAME => 'f1'
$ alter 'yuzhouwan' , NAME => 'f2'
Updating all regions with the new schema...
1 /1 regions updated.
Done.
0 row(s) in 1.3020 seconds
$ create 'yuzhouwan' , {NAME => 'info' }
$ put 'yuzhouwan' , 'rk00001' , 'info:name' , 'China'
$ get 'yuzhouwan' , 'rk00001' , {COLUMN => 'info:name' }, 'value'
$ put 'yuzhouwan' , 'rk00001' , 'info:address' , 'value'
$ scan 'yuzhouwan'
ROW COLUMN+CELL
rk00001 column=info:address, timestamp=1480556328381 , value=value
1 row(s) in 0.0220 seconds
$ alter 'yuzhouwan' , {NAME => 'f3' }, {NAME => 'f4' }
$ alter 'yuzhouwan' , {NAME => 'f5' }, {NAME => 'f1' , METHOD => 'delete' }, {NAME => 'f2' , METHOD => 'delete' }, {NAME => 'f3' , METHOD => 'delete' }, {NAME => 'f4' , METHOD => 'delete' }
$ deteleall ,
清空表数据
$ describe 'yuzhouwan'
Table yuzhouwan is ENABLED
COLUMN FAMILIES DESCRIPTION
{NAME => 'data' , DATA_BLOCK_ENCODING => 'NONE' , BLOOMFILTER => 'ROW' , REPLICATION_SCOPE => '0' , VERSIONS => '1' , COMPRESSION => 'NONE' , MIN_VERSIONS => '0' , TTL => 'FOREVER' , KEEP_DELETED_CELLS => 'FALSE' , BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
{NAME => 'f5' , DATA_BLOCK_ENCODING => 'NONE' , BLOOMFILTER => 'ROW' , REPLICATION_SCOPE => '0' , COMPRESSION => 'NONE' , VERSIONS => '1' , TTL => 'FOREVER' , MIN_VERSIONS => '0' , KEEP_DELETED_CELLS => 'FALSE'
, BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
{NAME => 'info' , DATA_BLOCK_ENCODING => 'NONE' , BLOOMFILTER => 'ROW' , REPLICATION_SCOPE => '0' , VERSIONS => '3' , COMPRESSION => 'NONE' , MIN_VERSIONS => '0' , TTL => 'FOREVER' , KEEP_DELETED_CELLS => 'FALSE' , BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
3 row(s) in 0.0230 seconds
$ truncate_preserve 'yuzhouwan'
$ truncate 'yuzhouwan'
$ scan 'yuzhouwan'
ROW COLUMN+CELL
0 row(s) in 0.3170 seconds
改表名
$ disable 'yuzhouwan'
$ snapshot 'yuzhouwan' , 'yuzhouwan_snapshot'
$ clone_snapshot 'yuzhouwan_snapshot' , 'ns_site:yuzhouwan'
$ delete_snapshot 'yuzhouwan_snapshot'
$ drop 'yuzhouwan'
$ grant 'site' , 'CXWR' , 'ns_site:yuzhouwan'
$ user_permission 'yuzhouwan'
User Table,Family,Qualifier:Permission
site default,yuzhouwan,,: [Permission: actions=CREATE,EXEC,WRITE,READ]
hbase default,yuzhouwan,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
$ disable 'ns_site:yuzhouwan'
$ drop 'ns_site:yuzhouwan'
$ exists 'ns_site:yuzhouwan'
Table ns_site:yuzhouwan does not exist
0 row(s) in 0.0200 seconds
改表属性
$ disable 'yuzhouwan'
$ alter 'yuzhouwan' , NAME => 'f' , VERSIONS => 5
$ alter 'yuzhouwan' , NAME => 'f' , TTL => 20
$ enable 'yuzhouwan'
$ describe 'yuzhouwan'
压缩算法
$ create 'yuzhouwan' , {NUMREGIONS => 15 , SPLITALGO => 'HexStringSplit' }, {NAME => 'v' , COMPRESSION => 'LZ4' , BLOOMFILTER => 'NONE' , DATA_BLOCK_ENCODING => 'FAST_DIFF' }
$ describe 'yuzhouwan'
Table yuzhouwan is ENABLED
COLUMN FAMILIES DESCRIPTION
{NAME => 'v' , DATA_BLOCK_ENCODING => 'FAST_DIFF' , BLOOMFILTER => 'NONE' , REPLICATION_SCOPE => '0' , VERSIONS => '1' , COMPRESSION => 'LZ4' , MIN_VERSIONS => '0' , TTL => 'FOREVER' , KEEP_DELETED_CELLS => 'FALSE' , BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
1 row(s) in 0.0280 seconds
权限控制
$ grant 'benedict' , 'WRXC' , 'yuzhouwan'
$ echo "scan 'hbase:acl'" | hbase shell > acl.txt
yuzhouwan column=l:benedict, timestamp=1496216745249 , value=WRXC
yuzhouwan column=l:hbase, timestamp=1496216737326 , value=RWXCA
$ user_permission
$ user_permission 'yuzhouwan'
User Table,Family,Qualifier:Permission
hbase default,yuzhouwan,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
benedict default,yuzhouwan,,: [Permission: actions=WRITE,READ,EXEC,CREATE]
2 row(s) in 0.0510 seconds
$ revoke 'benedict' , 'yuzhouwan'
分区
$ create 'yuzhouwan' , {NAME => 'f' }, SPLITS => ['1' , '2' , '3' ]
$ alter 'yuzhouwan' , SPLITS => ['1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ]
$ alter 'yuzhouwan' , {METHOD => 'table_att' , SPLIT_POLICY => 'org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy' }
$ balance_switch true
$ balance_switch false
命名空间
$ list_namespace_tables 'hbase'
TABLE
acl
meta
namespace
3 row(s) in 0.0050 seconds
$ list_namespace
NAMESPACE
default
hbase
50 row(s) in 0.3710 seconds
$ create_namespace 'www'
$ exists 'www:yuzhouwan.site'
$ create 'www:yuzhouwan.site' , {NAME => 'info' , VERSIONS=> 9 }, SPLITS => ['1' ,'2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9' ]
$ alter_namespace 'www' , {METHOD => 'set' , 'PROPERTY_NAME' => 'PROPERTY_VALUE' }
$ drop_namespace 'www'
手动 Split
$ create 'yuzhouwan' , {NAME => 'info' , VERSIONS => 3 }, {NAME => 'data' , VERSIONS => 1 }
$ put 'yuzhouwan' , 'rk0001' , 'info:name' , 'Benedict Jin'
$ put 'yuzhouwan' , 'rk0001' , 'info:gender' , 'Man'
$ put 'yuzhouwan' , 'rk0001' , 'data:pic' , '[picture]'
$ put 'yuzhouwan' , 'rk0002' , 'info:name' , 'Yuzhouwan'
$ split 'yuzhouwan' , 'rk0002'
yuzhouwan,,1500964657548 .bd21cdf7ae9e2d8e5b2ed3730eb8b738. yuzhouwan01:60020 rk0002 1.0 0
yuzhouwan,rk0002,1500964657548.76 f95590aed5d39291a087c5e8e83833. yuzhouwan02:60020 rk0002 1.0 2
Phoenix 命令
$ sqlline.py :/phoenix sql.txt
实战技巧
Hive 数据导入(Bulkload)
Bulkload 就是 依据 Hive 表的 schema 解析 RCFile,然后通过 MapReduce 程序 生成 HBase 的 HFile 文件,最后直接利用 bulkload 机制将 HFile 文件导入到 HBase 中。也就是 直接存放到 HDFS 中。这样会比 调用 Api 一条条的导入,效率会高很多(一般的,Hive 数据入库 HBase,都会使用 bulkload 的方式)
集群间复制(CopyTable + Replication)
相关命令
Commend
Comment
add_peer
添加一条复制连接,ID 是连接的标识符,CLUSTER_KEY 的格式是 HBase.zookeeper.quorum: HBase.zookeeper.property.clientPort: zookeeper.znode.parent
list_peers
查看所有的复制连接
enable_peer
设置某条复制连接为可用状态,add_peer 一条连接默认就是 enable
的,通过 disable_peer 命令让该连接变为不可用的时候,可以通过 enable_peer 让连接变成可用
disable_peer
设置某条复制连接为不可用状态
remove_peer
删除某条复制连接
set_peer_tableCFs
设置某条复制连接可以复制的表信息
默认 add_peer 添加的复制连接是可以复制集群所有的表。如果,只想复制某些表的话,就可以用 set_peer_tableCFs,复制连接的粒度可以到表的列族。表之间通过 ‘;’ 分号 隔开,列族之间通过 ‘,’ 逗号 隔开。e.g. set_peer_tableCFs ‘2’, “table1; table2:cf1,cf2; table3:cfA,cfB”。使用 ‘set_peer_tableCFs’ 命令,可以设置复制连接所有的表
append_peer_tableCFs
可以为复制连接添加需要复制的表
remove_peer_tableCFs
为复制连接删除不需要复制的表
show_peer_tableCFs
查看某条复制连接复制的表信息,查出的信息为空时,表示复制所有的表
list_replicated_tables
列出所有复制的表
监控 Replication
HBase Shell
$ status 'replication'
Metrics
源端
Metrics Name
Comment
sizeOfLogQueue
还有多少 WAL 文件没处理
ageOfLastShippedOp
上一次复制延迟时间
shippedBatches
传输了多少批数据
shippedKBs
传输了多少 KB 的数据
shippedOps
传输了多少条数据
logEditsRead
读取了多少个 logEdits
logReadInBytes
读取了多少 KB 数据
logEditsFiltered
实际过滤了多少 logEdits
目的端
Metrics Name
Comment
sink.ageOfLastAppliedOp
上次处理的延迟
sink.appliedBatches
处理的批次数
sink.appliedOps
处理的数据条数
完整步骤
CopyTable
2017 -01 -01 00 :00 :00 (1483200000000 ) 2017 -05 -01 00 :00 :00 (1493568000000 )
$ echo "`date -d " 2017 -01 -01 00 :00 :00 " +%s`000"
$ echo "`date -d " 2017 -05 -01 00 :00 :00 " +%s`000"
$ hbase org.apache.hadoop.hbase.mapreduce.CopyTable --starttime=1483200000000 --endtime=1493568000000 --peer.adr=,,...::/
$ hbase org.apache.hadoop.hbase.mapreduce.RowCounter --endtime=1493568000000
$ hadoop fs -du hdfs:// /hbase/data//
Replication
$ list_peers
$ add_peer '' , ",,...::/"
$ disable ''
$ alter '', {NAME => '' , REPLICATION_SCOPE => '1' }
$ enable ''
Trouble shooting
$ hbase hbck
$ balance_switch true
关闭自动分区
$ alter 'yuzhouwan' , {METHOD => 'table_att' , SPLIT_POLICY => 'org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy' }
JMX 获取部分指标项
http://namenode:50070 /jmx?qry=<指标项>
http://namenode:50070 /jmx?qry=hadoop:service=NameNode,name=NameNodeInfo
架构
总图
(图片来源: HBase:The Definitive Guide)
踩过的坑
Table is neither in disabled nor in enabled state
描述
执行完正常的建表语句之后,一直卡在 enable table
这步上
解决
$ is_enabled 'yuzhouwan'
false
$ is_disabled 'yuzhouwan'
false
$ hbase zkcli
$ delete /hbase/table/yuzhouwan
$ hbase hbck -fixMeta -fixAssignments
$ is_enabled 'yuzhouwan'
true
$ disable 'yuzhouwan'
No GCs detected
解决
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=0
-XX:-UseBiasedLocking
十六进制无法在命令行被识别
解决
$ put 'yuzhouwan' , 'rowkey01' , 'cf:age' , "\xFF"
性能优化
社区跟进
详见,《开源社区》
资料
Doc
Blog
Put
Read
Replication
BulkLoad
HBaseBulkLoad
Bulkload Hive 表到 HBase
Flush
HBase – Memstore Flush 深度解析
Code Resource
有态度的 HBase / Spark / BigData
更多资源,欢迎加入,一起交流学习
Technical Discussion Group:(人工智能 1020982(高级)& 1217710(进阶)| BigData 1670647)
Post author:Benedict Jin Post link: https://yuzhouwan.com/posts/45888/ Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
你可能感兴趣的:(Apache,HBase)
IK分词
初心myp
实现简单的分词功能,智能化分词添加依赖配置:4.10.4org.apache.lucenelucene-core${lucene.version}org.apache.lucenelucene-analyzers-common${lucene.version}org.apache.lucenelucene-queryparser${lucene.version}org.apache.lucenel
包含日志获取webshell
陈望_ning
日志文件关闭:Apache目录下的httpd.conf文件#ErrorLog"logs/error.log"#CustomLog"logs/access.log"common加#号为注释不产生日志文件如果去掉#将会在Apache/logs/目录下产生日志文件linux:access_logerror_logwindows:access.logerror.logaccess_log每一行记录了一次网
mac os 10.9 mysql_MAC OSX 10.9 apache php mysql 环境配置
AY05
mac os 10.9 mysql
#终端内运行sudoapachectlstart#启动Apachesudoapachectlrestart#重启Apachesudoapachectlstop#停止Apache#配置Apachesudovi/private/etc/apache2/httpd.conf#将里面的这一行去掉前面的##LoadModulephp5_modulelibexec/apache2/libphp5.so#配置P
搜索引擎技术选型
dusty_giser
近期,业主对POI检索提出了一些想法,针对之前简单的WordSegment分词和模糊匹配搜索需要进行一些更为符合业主需求的调整。于是这几天对搜索引擎进行了一些技术选型;一、ApacheLucene Lucene是一个开源的高性能、可扩展的全文检索引擎工具包,但不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。所以它是一套信息检索工具包,可以说是当今最先进
Ubuntu lamp
会飞的灰大狼
linux ubuntu
Ubuntulamp前言在Ubuntu安装lamp架构我们了解到lamp是完整的架构我们前面了解到了集合了Linux系统apacheMySQL和PHP语言的完整架构我们前面说了Centos7中编译安装lamp那么我们去说一下在Ubuntu中安装安装apache2apt直接安装apache2apt-yinstallapache2启动apache2systemctlstartapache2#测
ROS2编写一个简单的插件
CrimsonEmber
ROS笔记 ROS2 笔记 学习
1.createabaseclasspackageros2pkgcreate--build-typeament_cmake--licenseApache-2.0--dependenciespluginlib--node-namearea_nodepolygon_base编辑ros2_ws/src/polygon_base/include/polygon_base/regular_polygon.h
全面对比,深度解析 Ignite 与 Spark
xaio7biancheng
经常有人拿Ignite和Spark进行比较,然后搞不清两者的区别和联系。Ignite和Spark,如果笼统归类,都可以归于内存计算平台,然而两者功能上虽然有交集,并且Ignite也会对Spark进行支持,但是不管是从定位上,还是从功能上来说,它们差别巨大,适用领域有显著的区别。本文从各个方面对此进行对比分析,供各位技术选型参考。一、综述Ignite和Spark都为Apache的顶级开源项目,遵循A
ignite redis_全面对比,深度解析 Ignite 与 Spark
weixin_39997696
ignite redis
经常有人拿Ignite和Spark进行比较,然后搞不清两者的区别和联系。Ignite和Spark,如果笼统归类,都可以归于内存计算平台,然而两者功能上虽然有交集,并且Ignite也会对Spark进行支持,但是不管是从定位上,还是从功能上来说,它们差别巨大,适用领域有显著的区别。本文从各个方面对此进行对比分析,供各位技术选型参考。一、综述Ignite和Spark都为Apache的顶级开源项目,遵循A
面向现代数据湖仓的开放表格式对比分析:Iceberg、Hudi、Delta Lake与Paimon
piekill
大数据平台 大数据 spark flink big data 数据仓库
文章目录第一章数据湖的演进:从存储到事务型平台1.1前湖仓时代:ApacheHive的局限性1.2湖仓一体的范式转移第二章架构深度剖析2.1ApacheIceberg:以元数据为中心的设计2.2ApacheHudi:流式优先、时间轴驱动的架构2.3DeltaLake:以事务日志为唯一真相源2.4ApachePaimon:面向实时湖仓的LSM树架构第三章核心能力对比分析3.1事务性与并发控制3.2数
如何在 Apache Ignite 中创建和使用自定义 SQL 函数(Custom SQL Functions)
lang20150928
其他 apache Ignite
这段内容讲的是如何在ApacheIgnite中创建和使用自定义SQL函数(CustomSQLFunctions)。我们可以分步骤来理解它的含义和用法。一、什么是CustomSQLFunction?ApacheIgnite的SQL引擎支持标准SQL函数(如COUNT、SUM、AVG等),但有时这些内置函数无法满足业务需求。这时,你可以通过编写Java代码,创建自己的SQL函数,并在SQL查询中使用它
一句话读懂Kafka:5W1H带你解锁分布式消息队列的奥密
落霞归雁
AI编程 教育电商 微信开放平台 rabbitmq 中间件
一句话读懂Kafka:5W1H带你解锁分布式消息队列的奥秘在当今数字化时代,消息队列(MessageQueue,简称MQ)已经成为分布式系统中不可或缺的组件,而ApacheKafka作为其中的佼佼者,以其卓越的性能和广泛的应用场景脱颖而出。今天,就让我们用一句话读懂Kafka,并通过5W1H(What、Why、Who、When、Where、How)的方式,深入剖析它的核心价值与技术魅力。一句话读懂
时序数据库IoTDB的优势场景分析
时序数据说
时序数据库 iotdb 数据库 物联网 大数据
在当今数据爆炸的时代,物联网(IoT)设备产生的时序数据呈指数级增长。面对海量、高频的时序数据处理需求,传统关系型数据库显得力不从心。ApacheIoTDB(物联网数据库)作为一款专为物联网场景设计的时序数据库,凭借其独特架构在多个领域展现出显著优势。本文将深入探讨IoTDB最具竞争力的应用场景,帮助技术选型者做出明智决策。一、工业物联网(IIoT)场景工业物联网是IoTDB最能发挥其价值的领域之
Hbase基础语法
flyair_China
hbase 数据库 大数据
HBase作为分布式列式数据库,其语法和预分区策略是优化性能的关键。以下综合语法详解与预分区设计指南:一、HBase核心语法分类1.DDL操作(表结构管理)创建表语法:create'表名',{NAME⇒'列族1',VERSIONS⇒n},{NAME⇒'列族2',VERSIONS⇒n}示例:创建user表,含info(保留3版本)和data(保留1版本)列族:create'user',{NAME⇒'
SpringCloud seata全局事务
frt6668
SpringCloud Springboot spring cloud spring boot 后端
项目https://github.com/apache/incubator-seatadocker拉取启动server$dockerrun--nameseata-server-p8091:8091apache/seata-server:2.1.0seata注册到nacoscom.alibaba.cloudspring-cloud-starter-alibaba-seata2023.0.3.3在所有
Flink Checkpoint 状态后端详解:类型、特性对比及场景化选型指南
ApacheFlink提供了多种状态后端以支持Checkpoint机制下的状态持久化,确保在故障发生时能够快速恢复状态并实现Exactly-Once处理语义。以下是几种常见状态后端的详细介绍及其对比情况,以及不同场景下的选型建议:1.MemoryStateBackend(内存状态后端)描述:MemoryStateBackend将状态数据存储在TaskManager的JVM堆内存中,并在Checkp
Flink实战(七十):监控(二)搭建flink可视化监控 Pushgateway+ Prometheus + Grafana (windows )
王知无(import_bigdata)
Flink系统性学习专栏 flink 大数据
1Flink的配置:在flink配置⽂件flink-conf.yaml中添加:metrics.reporter.promgateway.class:org.apache.flink.metrics.prometheus.PrometheusPushGatewayReportermetrics.reporter.promgateway.host:localhost#promgateway主要是Pus
ubuntu linux 从入门到精通.pdf,UBUNTU LINUX从入门到精通(附DVD)
鲨鱼飞不动了
ubuntu linux 从入门到精通.pdf
摘要:本书是为想系统学习Linux的初学者准备的,从系统,驱动,常用软件的安装开始讲起,让读者快速掌握Linux的基础知识,并轻松向网络管理,Shell,Vi/Vim,X-Window,进程管理进阶,然后深入到Apache,VSFTPD,Postfix,SAMBA,DNS等服务器的配置,全面掌握企业所需的Linux应用技能.传统的Linux图书主要以命令行的方式进行介绍,学习起来非常枯燥乏味,而且
maven-shade-plugin插件将项目打成可执行的jar包
九师兄
工具-maven
使用maven-shade-plugin插件将项目打成可执行的jar包1、在pom.xml文件中添加maven-shade-plugin插件全部文件:maven-compiler-plugin1.61.6org.apache.maven.plugins<
WEB安全--Java安全--jsp webshell免杀
1.1、BCELClassLoader介绍(仅适用于BCEL6.0以下):BCEL(ApacheCommonsBCEL™)是一个用于分析、创建和操纵Java类文件的工具库;BCEL的类加载器在解析类名时会对ClassName中有BCEL标识的类做特殊处理,该特性经常被用于编写各类攻击Payload。当BCEL的loadClass加载一个类名中带有BCEL$$”的类时会截取出BCEL后面的字符串,然
Hive-3.1.2安装部署
ggnff
Hive-3.1.2安装部署一Hive-3.1.2网盘下载:链接:https://pan.baidu.com/s/1c8L3ygVae2kSN-ue8RZNtQ提取码:chjs1.下载完成后,上传到Linux的/opt/module下2.解压并重命名为hivecd/opt/moduletar-zxvfapache-hive-3.1.2-bin.tar.gzmvapache-hive-3.1.2-b
SpringBoot—整合log4j2入门和log4j2.xml配置详解
LuckyTHP
spring boot log4j xml
引言对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维。而日志的输出需要有一定的规划,如日志命名、日志大小,日志分割的文件个数等。在Spring的框架下,我们可以使用log4j来进行日志的设置,高版本的SpringBoot会使用log4j2。介绍log4j2概述截取官网的原话:ApacheLog4j2isanupgradetoLog4jthatprovidessignifican
大数据开发系列(六)----Hive3.0.0安装配置以及Mysql5.7安装配置
Xiaoyeforever
hive mysql hive hadoop 数据库
一、Hive3.0.0安装配置:(Hive3.1.2有BUG)hadoop3.1.2Hive各个版本下载地址:http://archive.apache.org/dist/hive/,这里我们下载hive3.0.01、解压:tar-xzvfapache-hive-3.0.0-bin.tar.gz-C/usr/lib/JDK_2021cd/usr/lib/JDK_20212.改名称.将解压以后的文件
SpringBoot 整合shiro实现权限管理
拉提娜的爸爸
一、准备环境1、导入pom依赖org.apache.shiroshiro-spring1.4.1com.github.theborakompanionithymeleaf-extras-shiro2.0.0org.springframework.bootspring-boot-configuration-processortruecn.hutoolhutool-all4.6.62、配置文件#myb
MyBatisPlus 批量添加
文章目录现状优化效果报错现状一般来说,批量插入可以使用MyBatisPlus中ServiceImpl自带的方法saveBatch打开sql日志,application.yml添加配置,mapper-locations配置mapper路径mybatis-plus:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImpl#开启
数据写入因为汉字引发的异常
qq_40841339
spark hadoop hive hive hadoop 数据仓库
spark数据写hive表,发生查询分区异常问题异常:251071241926.49ERRORHive:MelaException(message.Exceptionthrownwhenexeculingquey.SELECTDISTINCT‘orgapache.hadop.hivemelastore.modelMpartionAs"NUCLEUSTYPE,AONCREATETIME,AO.LAS
大数据编程基础
芝麻开门-新的起点
大数据 大数据
3.1Java基础(重点)内容讲解Java是大数据领域最重要的编程语言之一。Hadoop、HBase、Elasticsearch等众多核心框架都是用Java开发的。因此,扎实的Java基础对于深入理解这些框架的底层原理和进行二次开发至关重要。为什么Java在大数据领域如此重要?生态系统:Hadoop生态系统原生就是Java构建的,使用Java进行开发可以无缝集成。跨平台性:Java的“一次编译,到
深入解析HBase如何保证强一致性:WAL日志与MVCC机制
码字的字节
hadoop布道师 hadoop HBase WAL MVCC
HBase强一致性的重要性在分布式数据库系统中,强一致性是确保数据可靠性和系统可信度的核心支柱。作为Hadoop生态系统中关键的列式存储数据库,HBase需要处理金融交易、实时风控等高敏感场景下的海量数据操作,这使得强一致性成为其设计架构中不可妥协的基础特性。分布式环境下的数据一致性挑战在典型的HBase部署环境中,数据被分散存储在多个RegionServer节点上,同时面临以下核心挑战:1.跨节
阿里云MaxCompute SQL与Apache Hive区别面面观
大模型大数据攻城狮
阿里云 odps sql 物化 maxcompute udf开发 sql语法
目录1.引爆开场:MaxCompute和Hive,谁才是大数据SQL的王者?2.架构大比拼:从Hadoop到Serverless的进化之路Hive的架构:老派但经典MaxCompute的架构:云原生新贵3.SQL语法的微妙差异:90%相似,10%决定胜负建表语句分区与分桶函数与UDF4.执行引擎的较量:MapReducevs飞天引擎Hive的MapReduce执行流程MaxCompute的飞天引擎
Java PDF文件解析实战教程及源代码
小虾汉斯
本文还有配套的精品资源,点击获取简介:本篇介绍如何使用Java编程语言解析PDF文件,特别强调了使用ApachePDFBox库的详细步骤。通过实际的源代码示例,涵盖从基本文档读取到复杂内容提取的所有操作,包括遍历PDF页面、获取文本内容和图像,以及解析元数据等。压缩包中包含了必要的库文件、日志框架,以及一个带有详细注释的Exec.java示例程序,方便开发者学习和实践PDF文档处理的技能。1.PD
一文说清楚Hive
Hive作为ApacheHadoop生态的核心数据仓库工具,其设计初衷是为熟悉SQL的用户提供大规模数据离线处理能力。以下从底层计算框架、优点、场景、注意事项及实践案例五个维度展开说明。一、Hive底层分布式计算框架对比Hive本身不直接执行计算,而是将HQL转换为底层计算引擎的任务。目前支持的主流引擎及其特点如下:计算引擎核心原理优点缺点适用场景MapReduce基于“Map→Shuffle→R
多线程编程之join()方法
周凡杨
java JOIN 多线程 编程 线程
现实生活中,有些工作是需要团队中成员依次完成的,这就涉及到了一个顺序问题。现在有T1、T2、T3三个工人,如何保证T2在T1执行完后执行,T3在T2执行完后执行?问题分析:首先问题中有三个实体,T1、T2、T3, 因为是多线程编程,所以都要设计成线程类。关键是怎么保证线程能依次执行完呢?
Java实现过程如下:
public class T1 implements Runnabl
java中switch的使用
bingyingao
java enum break continue
java中的switch仅支持case条件仅支持int、enum两种类型。
用enum的时候,不能直接写下列形式。
switch (timeType) {
case ProdtransTimeTypeEnum.DAILY:
break;
default:
br
hive having count 不能去重
daizj
hive 去重 having count 计数
hive在使用having count()是,不支持去重计数
hive (default)> select imei from t_test_phonenum where ds=20150701 group by imei having count(distinct phone_num)>1 limit 10;
FAILED: SemanticExcep
WebSphere对JSP的缓存
周凡杨
WAS JSP 缓存
对于线网上的工程,更新JSP到WebSphere后,有时会出现修改的jsp没有起作用,特别是改变了某jsp的样式后,在页面中没看到效果,这主要就是由于websphere中缓存的缘故,这就要清除WebSphere中jsp缓存。要清除WebSphere中JSP的缓存,就要找到WAS安装后的根目录。
现服务
设计模式总结
朱辉辉33
java 设计模式
1.工厂模式
1.1 工厂方法模式 (由一个工厂类管理构造方法)
1.1.1普通工厂模式(一个工厂类中只有一个方法)
1.1.2多工厂模式(一个工厂类中有多个方法)
1.1.3静态工厂模式(将工厂类中的方法变成静态方法)
&n
实例:供应商管理报表需求调研报告
老A不折腾
finereport 报表系统 报表软件 信息化选型
引言
随着企业集团的生产规模扩张,为支撑全球供应链管理,对于供应商的管理和采购过程的监控已经不局限于简单的交付以及价格的管理,目前采购及供应商管理各个环节的操作分别在不同的系统下进行,而各个数据源都独立存在,无法提供统一的数据支持;因此,为了实现对于数据分析以提供采购决策,建立报表体系成为必须。 业务目标
1、通过报表为采购决策提供数据分析与支撑
2、对供应商进行综合评估以及管理,合理管理和
mysql
林鹤霄
转载源:http://blog.sina.com.cn/s/blog_4f925fc30100rx5l.html
mysql -uroot -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@centos var]# service mysql
Linux下多线程堆栈查看工具(pstree、ps、pstack)
aigo
linux
原文:http://blog.csdn.net/yfkiss/article/details/6729364
1. pstree
pstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552) &n
html input与textarea 值改变事件
alxw4616
JavaScript
// 文本输入框(input) 文本域(textarea)值改变事件
// onpropertychange(IE) oninput(w3c)
$('input,textarea').on('propertychange input', function(event) {
console.log($(this).val())
});
String类的基本用法
百合不是茶
String
字符串的用法;
// 根据字节数组创建字符串
byte[] by = { 'a', 'b', 'c', 'd' };
String newByteString = new String(by);
1,length() 获取字符串的长度
&nbs
JDK1.5 Semaphore实例
bijian1013
java thread java多线程 Semaphore
Semaphore类
一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。
S
使用GZip来压缩传输量
bijian1013
java GZip
启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6。
PJL Compressi
【Java范型三】Java范型详解之范型类型通配符
bit1129
java
定义如下一个简单的范型类,
package com.tom.lang.generics;
public class Generics<T> {
private T value;
public Generics(T value) {
this.value = value;
}
}
【Hadoop十二】HDFS常用命令
bit1129
hadoop
1. 修改日志文件查看器
hdfs oev -i edits_0000000000000000081-0000000000000000089 -o edits.xml
cat edits.xml
修改日志文件转储为xml格式的edits.xml文件,其中每条RECORD就是一个操作事务日志
2. fsimage查看HDFS中的块信息等
&nb
怎样区别nginx中rewrite时break和last
ronin47
在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。
location /
{
proxy_pass http://test;
java-21.中兴面试题 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等于 m
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class CombinationToSum {
/*
第21 题
2010 年中兴面试题
编程求解:
输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 ,
使其和等
eclipse svn 帐号密码修改问题
开窍的石头
eclipse SVN svn帐号密码修改
问题描述:
Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能。但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号、密码保存之后,就无法再变更了。
解决思路:
删除subclipse记录的帐号、密码信息,重新输入
[电子商务]传统商务活动与互联网的结合
comsci
电子商务
某一个传统名牌产品,过去销售的地点就在某些特定的地区和阶层,现在进入互联网之后,用户的数量群突然扩大了无数倍,但是,这种产品潜在的劣势也被放大了无数倍,这种销售利润与经营风险同步放大的效应,在最近几年将会频繁出现。。。。
如何避免销售量和利润率增加的
java 解析 properties-使用 Properties-可以指定配置文件路径
cuityang
java properties
#mq
xdr.mq.url=tcp://192.168.100.15:61618;
import java.io.IOException;
import java.util.Properties;
public class Test {
String conf = "log4j.properties";
private static final
Java核心问题集锦
darrenzhu
java 基础 核心 难点
注意,这里的参考文章基本来自Effective Java和jdk源码
1)ConcurrentModificationException
当你用for each遍历一个list时,如果你在循环主体代码中修改list中的元素,将会得到这个Exception,解决的办法是:
1)用listIterator, 它支持在遍历的过程中修改元素,
2)不用listIterator, new一个
1分钟学会Markdown语法
dcj3sjt126com
markdown
markdown 简明语法 基本符号
*,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号
空白行表示另起一个段落
`是表示inline代码,tab是用来标记 代码段,分别对应html的code,pre标签
换行
单一段落( <p>) 用一个空白行
连续两个空格 会变成一个 <br>
连续3个符号,然后是空行
Gson使用二(GsonBuilder)
eksliang
json gson GsonBuilder
转载请出自出处:http://eksliang.iteye.com/blog/2175473 一.概述
GsonBuilder用来定制java跟json之间的转换格式
二.基本使用
实体测试类:
温馨提示:默认情况下@Expose注解是不起作用的,除非你用GsonBuilder创建Gson的时候调用了GsonBuilder.excludeField
报ClassNotFoundException: Didn't find class "...Activity" on path: DexPathList
gundumw100
android
有一个工程,本来运行是正常的,我想把它移植到另一台PC上,结果报:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobovip.bgr/com.mobovip.bgr.MainActivity}: java.lang.ClassNotFoundException: Didn't f
JavaWeb之JSP指令
ihuning
javaweb
要点
JSP指令简介
page指令
include指令
JSP指令简介
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令的基本语法格式:
<%@ 指令 属性名="
mac上编译FFmpeg跑ios
啸笑天
ffmpeg
1、下载文件:https://github.com/libav/gas-preprocessor, 复制gas-preprocessor.pl到/usr/local/bin/下, 修改文件权限:chmod 777 /usr/local/bin/gas-preprocessor.pl
2、安装yasm-1.2.0
curl http://www.tortall.net/projects/yasm
sql mysql oracle中字符串连接
macroli
oracle sql mysql SQL Server
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
Mysql 中 CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CON
Git fatal: unab SSL certificate problem: unable to get local issuer ce rtificate
qiaolevip
学习永无止境 每天进步一点点 git 纵观千象
// 报错如下:
$ git pull origin master
fatal: unable to access 'https://git.xxx.com/': SSL certificate problem: unable to get local issuer ce
rtificate
// 原因:
由于git最新版默认使用ssl安全验证,但是我们是使用的git未设
windows命令行设置wifi
surfingll
windows wifi 笔记本wifi
还没有讨厌无线wifi的无尽广告么,还在耐心等待它慢慢启动么
教你命令行设置 笔记本电脑wifi:
1、开启wifi命令
netsh wlan set hostednetwork mode=allow ssid=surf8 key=bb123456
netsh wlan start hostednetwork
pause
其中pause是等待输入,可以去掉
2、
Linux(Ubuntu)下安装sysv-rc-conf
wmlJava
linux ubuntu sysv-rc-conf
安装:sudo apt-get install sysv-rc-conf 使用:sudo sysv-rc-conf
操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
背景知识
sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconf
svn切换环境,重发布应用多了javaee标签前缀
zengshaotao
javaee
更换了开发环境,从杭州,改变到了上海。svn的地址肯定要切换的,切换之前需要将原svn自带的.svn文件信息删除,可手动删除,也可通过废弃原来的svn位置提示删除.svn时删除。
然后就是按照最新的svn地址和规范建立相关的目录信息,再将原来的纯代码信息上传到新的环境。然后再重新检出,这样每次修改后就可以看到哪些文件被修改过,这对于增量发布的规范特别有用。
检出