series console上vi正常显示的设置

在FreeBSD中,登录到系统以后,运行:

 Bash |  copy |? 
  1. setenv TERM vt100

发表在 freebsd | 留下评论

使用hadoop-0.20.205在Redhat6上搭建TDW时的注意事项

1.关闭防火墙,以及启动时的防火墙服务

关闭防火墙但没有更改启动时rc配置,如果集群中个别机器重启,可能会出现no route to host这样的task错误,最终job可能执行完成,但是会重试很多次,浪费时间和系统资源。

 Bash |  copy |? 
  1. service iptables stop
  2. chkconfig iptables off

2.关于hostname设置

一开始偷懒,没有用hostname,直接上ip,结果发现在job的页面上,运行task的机器都变成localhost了,没法定位问题。于是把所有机器的hostname设置成hadoop-xx,xx为ip的最后8位的十进制数。

 Bash |  copy |? 
  1. for i in $(cat iplist); do ssh $i "/bin/echo -e NETWORKING=yes\\\nHOSTNAME=hadoop-$(echo $i | sed 's/192.168.200.//g') > /etc/sysconfig/network"; done

同时还要修改/etc/hosts,把hadoop-xx对应的ip加进去。如果windows端浏览器要访问这些host的页面,也需修改windows的hosts文件。

修改完系统配置后,还要修改hive元数据,hadoop配置,把之前写ip的地方,都替换成hostname。否则,hive在运行时会出现wrong fs的错误。

发表在 big data, hadoop, hive, java, linux | 留下评论

使用psql进行二进制文件的bytea输入和输出

PostgreSQL的客户端工具psql对bytea和二进制文件的输入输出支持支持的并不好,假设用户在使用pg的bytea存放图片等,希望把图片下载下来存为文件,一般要使用编程api。如果非要使用psql客户端,其实也可以实现,只是比较麻烦。
 
【方式一】

使用pg_read_binary_file这个函数,可以直接将一个二进制文件读入,返回一个bytea类型。

pg_read_binary_file(filename text [, offset bigintlength bigint])
但是这种方式有一些限制,使它基本无法使用:
限制一:所读取的文件,只能是PG Server端PGDATA目录下的文件
限制二:这个函数需要superuser权限才能调用
 
【方式二】
将二进制临时使用base64转为ascii,然后进行相关的操作。如下演示:
psql读入一个二进制文件为bytea:
 
bytea_io_test的表定义如下:

 SQL |  copy |? 
  1. \d bytea_io_test
  2. Table "public.bytea_io_test"
  3. Column  | Type  | Modifiers
  4. ---------+-------+-----------
  5. content | bytea |

将客户端的一个二进制文件,使用psql插入到表中:

 SQL |  copy |? 
  1. \set c `base64 xx.tgz`
  2. insert into bytea_io_test select decode(:'c','base64');

将表中的一个bytea列,导出为本地一个文件:

 SQL |  copy |? 
  1. \a
  2. \t
  3. select encode(content,'base64') as cc from bytea_io_test
  4. \g | base64 -d > yy.tgz

【bytea格式的文本显示问题】
如果是把一个文本文件存储成为了bytea,用hex看不到文本的内容,而用escape看到的内容会把换行符等转成\xxx这种格式,使用下面的方法,可以将bytea显示成正常的文本格式(这里假定文本编码格式为UTF8,如果是其他编码格式,请替换第二个参数):

 SQL |  copy |? 
  1. convert_from(bytea_colunm,'UTF8')

发表在 未分类 | 留下评论

PostgreSQL默认编辑器sql语法高亮支持

将以下设置加入到.bashrc中:

 Bash |  copy |? 
  1. export PSQL_EDITOR="vim -c 'set syntax=sql'"

之后在psql中,使用\e或者\ef时,会启用sql语法高亮。

发表在 linux, pgsql | 留下评论

freebsd禁止按ctrl+alt+del重启系统

运行时设置:

sysctl hw.syscons.kbd_reboot=0

持久化设置:

将修改添加到/etc/sysctl.conf中

发表在 freebsd | 留下评论

自动生成PostgreSQL的语法帮助信息命令

1.下载PG源代码

2.运行configure

3.进入到src/bin/psql目录下

4.运行make sql_help.c

在当前目录下生成的sql_help.c和sql_help.h即是sql帮助信息。被用在psql \h命令中。

发表在 linux, pgsql | 留下评论

使用xmllint抽取xml内容

$ cat foo.xml
<emplist>
<emp no=”1″>
<ename>John</ename>
</emp>
<emp no=”2″>
<ename>Jack</ename>
</emp>
</emplist>
$ echo ‘cat //emplist/emp[@no="1"]/ename/text()’|
xmllint –shell foo.xml |
sed -n 3p
John

发表在 linux | 留下评论

linux中msdos与vfat的区别

msdos是fat16,已经比较少见,有较多限制

vfat是fat32,windows上比较常用

发表在 linux | 留下评论

腾讯PostgreSQL应用分享(PGCONF CN2013)

2013 PostgreSQL中国用户大会在2013年10月26,27两天在杭州举行,大会聚集了腾讯、斯凯、华为、去哪等国内使用PG的企业,一起分享使用PG的经验,交流遇到的问题。在大会上,我做了题为《腾讯在PG上的应用分享》的分享。在腾讯,PG主要用于数据分析,作为腾讯分布式数据仓库的补充。在分享中,介绍了腾讯分布式数据仓库(TDW),腾讯基于PostgreSQL的数据服务tPG,以及我们对PG应用未来的一些想法。以下是本次分享的主要内容:

提纲

 PG在腾讯应用概述

 基于PG的数据库服务tPG介绍

 PG应用未来规划

——————————–

PG在腾讯应用概述

 主要业务场景为OLAP数据分析

 大部分为内部系统,少量应用于对外服务

 作为TDW系统的补充而存在

 主要应用形式为业务使用TDW提供的tPG服务

 TDW团队负责机器、运营和技术支持

 业务提交申请即可使用

 PG与MySQL

 MySQL可以支撑,则优先使用MySQL

 MySQL不能满足,再考虑使用PG

——————————–

TDW为什么要引入tPG

 TDW应用推广遇到的挑战

 TDW离线分析,不能满足业务的结果库需求

 TDW没有标准的JDBC、ODBC接口,难以与商业工具对接

 TDW处理小数据、做update和delete效率低

 解决方案

 TDW不是万能的,不可能满足所有应用场景

 需要建设一套RDBMS ,作为TDW的补充

• 要方便用户迁移已有业务,做好有工具做迁移

• 要有标准的JDBC、ODBC接口

• 性能要好

• 功能容易扩展

——————————–

为什么选择PostgreSQL

 完善的DB功能

 SQL标准支持较好

 支持PL/pgSQL等多种过程语言

 支持视图、分析函数、CTE等高级特性

 OLAP性能超过MySQL

 复杂SQL性能高10倍+

 基于cost的SQL优化,调优手段更多

 部分索引,函数索引,cluster索引

 插件式的功能扩展

 已有访问Mysql、Redis、文本等外部数据源插件

 很容易开发访问TDW的插件

——————————–

TB级数据库备份与恢复

基于zfs快照技术

 速度快,对上TB的数据做快照耗时小于1秒

 占用空间小,新生成的快照几乎不占空间

 支持快照增量备份,支持快速rollback

——————————–

tPG使用的开源插件

 分区管理:基于pg_partman进行改造

 监控:check_postgres和pgBadger

 缓存预热:pgfincore

 实例间互相访问:dblink

 读取MySQL数据:mysql_fdw

 中文全文检索:zhparser

——————————–

tPG运营现状

 目前运营情况

 11套tPG实例 ,共约40台机器

 已用存储约30TB ,最大实例存储达5TB

 tPG在公司内的用总户数100人+

 没有因PG本身出过事故,用户评价积极

 业务类型

 对外:用户报表

 对内:TDW系统,30多个业务的报表系统、数据提取系统、 BI系统、营销系统等

——————————–

Postgres-XC

 PG单机版问题

 单机版PG存储和计算性能不能扩展

 管理多个单机版PG ,运维工作量大

 Postgres-XC试用情况

 Pgxc1.1版本,8个datanode节点的集群

 Insert性能比单机低很多,推荐使用copy

 读性能几乎与节点数成正比

 在高并发下,GTM成为瓶颈

 在一些异常情况下,系统表损坏

——————————–

PG应用未来规划

 为业务提供集群版PG-XC服务

 更丰富的应用场景

 地理信息(PostGis )

 机器学习与数据挖掘(Madlib )

 R统计分析(PL/R )

 …

 接入流程自助化

 将tPG服务云化,降低运维人工参与量

演讲内容下载:腾讯PostgreSQL应用分享

发表在 pgsql | 留下评论

PostgreSQL的pg_toast_2619及pg_statistic表损坏问题解决

pg_toast_2619这个表是pg_statistic系统表的toast扩展表,如果PG报错如下:

ERROR:  unexpected chunk number 1 (expected 0) for toast value 16703 in pg_toast_2619

表示pg_toast_2619表损坏,可能pg_statistic也损坏了。这时候可以对整个DB进行analyze,有可能可以修复。如果在analyse过程中还是报错,那么可以通过删掉现有统计信息数据,重新生成来解决:

 SQL |  copy |? 
  1. mydb=# delete from pg_statistic;
  2. mydb=# reindex table pg_statistic;&nbsp;
  3. mydb=# vacuum analyze;

参考连接:

http://comments.gmane.org/gmane.comp.db.postgresql.bugs/29506
http://www.spinics.net/lists/pgsql-admin/msg05911.html
发表在 linux, pgsql | 留下评论