Bulkload是向HBase批量加载数据的方式,它会直接将数据进行准备和并加载成HFile,并直接讲文件插入到RegionServer中,这比通过一个MapReduce/Spark作业来加载性能高得多。详细的流程如下:
1. 抽取数据并形成固定格式的文件,比如csv。
2. 将数据转换称为HFile。这需要一个MapReduce作业,可以自己来实现Map方法来,HBase来完成后面的Reducer操作。最后,每一个region的HFile将会在输出目录被创建出来。
3. 将生成的HFile加载到HBase中,并在所有的regionserver上注册它们,即完成Complete Bulkload阶段。
Continue reading
Author Archives: debugo
使用importtsv命令加载数据
HBase 权限控制
HBase的权限管理依赖协协处理器。所以我们需要配置hbase.security.authorization=true
,以及hbase.coprocessor.master.classes
和hbase.coprocessor.master.classes
使其包含org.apache.hadoop.hbase.security. access.AccessController
来提供安全管控能力。所以需要设置下面参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<property> <name>hbase.superuser</name> <value>hbase</value> </property> <property> <name>hbase.coprocessor.region.classes</name> <value>org.apache.hadoop.hbase.security.access.AccessController</value> </property> <property> <name>hbase.coprocessor.master.classes</name> <value>org.apache.hadoop.hbase.security.access.AccessController</value> </property> <property> <name>hbase.rpc.engine</name> <value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value> </property> <property> <name>hbase.security.authorization</name> <value>true</value> </property> |
HBase 常用参数整理
1. 通用和master配置
hbase.rootdir
默认: file:///tmp/hbase-${user.name}/hbase
region server的数据根目录,用来持久化HBase。例如,要表示hdfs中的’/hbase’目录,namenode 运行在debugo01的8020端口,则需要设置为hdfs:// debugo01:8020/hbase。这个是必须要设置的项目,默认值本地文件系统的/tmp只能在单机模式使用。 Continue reading
HBase Shell 常用操作
HBase Shell是HBase的一个命令行工具,我们可以通过它对HBase进行维护操作。我们可以使用sudo -u hbase hbase shell来进入HBase shell。
在HBase shell中,可以使用status, version和whoami分别获得当前服务的状态、版本、登录用户和验证方式。
1 2 3 4 5 6 7 |
> status 3 servers, 1 dead, 1.3333 average load > version 0.98.6-cdh5.3.1, rUnknown, Tue Jan 27 16:43:50 PST 2015 > whoami hbase (auth:SIMPLE) groups: hbase |
HBase shell中的帮助命令非常强大,使用help获得全部命令的列表,使用help ‘command_name’获得某一个命令的详细信息。 Continue reading
Docker & Weave实现跨主机容器互联
Docker是一个开源的应用容器引擎,本身功能已经逐步满足我们日常要求,但是一直对管理Docker容器之间的交互和跨主机集群的网络配置一直空缺,需要依赖外部工具来实现。最近看了一篇infoQ的文章:5个解决Docker网络问题的项目,概述了目前主流的五个工具:Weave、Kubernetes、CoreOS, Flannel、Pipework以及SocketPlane。其中Weave是由Zett.io公司开发的,它能够创建一个虚拟网络,用于连接部署在多台主机上的Docker容器,这样容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。外部设备能够访问Weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。Weave能够穿透防火墙并运行在部分连接的网络上,另外,Weave的通信支持加密,所以用户可以从一个不受信任的网络连接到主机。下面我们实际来试一试吧。 Continue reading
Docker 1.5 – 容器运行监控和只读容器
Docker 1.5正式版今年2月初发布了,在这个版本中Docker加入很多期望已久的新功能,其中只读容器和容器运行状态监控非常实用,让我们来看看吧!
升级到1.5
我的操作系统是CentOS 6.6,首先通过epel源来安装docker,里面附带了很多docker相关的启动脚本。这个docker的版本是1.4.1
1 2 3 4 5 6 7 8 9 10 |
# docker -v Docker version 1.4.1, build 5bc2ff8/1.4.1 # 下面升级docker,我们直接下载最新的docker bin文件,并替换docker的现有的二进制文件即可。 # wget https://get.docker.com/builds/Linux/x86_64/docker-latest -O docker # chmod +x docker # service docker stop Stopping docker: [ OK ] # cp docker /usr/bin/docker # docker -v Docker version 1.5.0, build a8a31ef |
OK~
配置监听端口
1 2 3 4 |
vim /etc/sysconfig/docker other_args="-H 10.62.242.201:5555 -H debugo01:5555 -H unix://var/run/docker.sock" service docker start Starting docker: [ OK ] |
只读容器
在1.5版本中可以使用–read-only参数启动一个容器,使它的文件系统“只读”;这个功能可以让你为容器中运行的应用限定特定的文件写入路径;此功能结合“数据卷”(volumes)使用可以确保容器中运行的程序只能将数据写入到事先指定的路径下。 Continue reading
使用Express模版引擎
需要使用下面的express应用设置,Express才能正确的处理模版文件。
views — 指定模版文件的目录,例如app.set(‘views’, ‘./views’)
view engine — 指定模版引擎,例如app.set(‘view engine’, ‘jade’)
首先要使用npm安装模版引擎jade。关于Jade,官网Jade Template Engine ,一个不错的教程Jade — 源于 Node.js 的 HTML 模板引擎
1 |
npm install jade |
例如Jade这种Express兼容的模版引擎,会导出名为 __express(filePath, options, callback)
的function,并可以通过res.render()来渲染模版代码。
一旦设定了视图模版引擎,你不需要显式地指定引擎或在应用程序加载模板引擎模块。Express会在内部自动加载它。例如:
1 |
app.set('view engine', 'jade'); |
在views目录下创建一个jade模版文件”index.jade”, 内容如下:
1 2 3 4 5 |
html head title!= title body h1!= message |
然后创建一个route来渲染”index.jade”文件。如果没有指定模版引擎,则需要指定view文件的扩展名。
1 2 3 4 5 6 7 8 9 10 11 |
var express = require('express'); var app = express(); app.set('views', './views') app.set('view engine', 'jade') app.get('/', function (req, res) { res.render('index', { title: 'Hey', message: 'Hello there!'}); }) app.listen(3000); |
使用node app.js
来启动应用,一旦有到’/’的请求时,”index.jade”会作为HTML来渲染。
参考:
Using Template Engines
使用Mongoose
Mongoose提供了一个直观的、基于模式(schema)的解决方案,可以为你的应用数据使用内置的类型转换、验证、查询和业务逻辑来建模。本文简述在Node.js中使用Mongoose连接MongoDB的方法。 Continue reading
JSON in JavaScript
JavaScript中,JSON对象解析JavaScript Object Notation (JSON) 以及将值转换成JSON的方法。JSON对象不能被构建和直接调用,它仅提供了两个工具的方法——Parse和stringtify。 Continue reading
使用Keepalived实现Nginx高可用性
上篇keepalived+MySQL双主实现高可用性介绍了使用Keepalived配置MySQL透明高可用的方法,本文趁热打铁,实现Nginx+Keepalived的高可用性架构,相比MySQL的高可用更加简单。Nginx的配置方法可以参考Nginx基本服务与upstream配置详解,并使用里面的环境。其中debugo01和debugo02作为负载均衡,而debugo03和debugo04作为web server。 Continue reading