write down,forget
adidas eqt support ultra primeknit vintage white coming soon adidas eqt support ultra boost primeknit adidas eqt support ultra pk vintage white available now adidas eqt support ultra primeknit vintage white sz adidas eqt support ultra boost primeknit adidas eqt adv support primeknit adidas eqt support ultra boost turbo red white adidas eqt support ultra boost turbo red white adidas eqt support ultra boost turbo red adidas eqt support ultra whiteturbo adidas eqt support ultra boost off white more images adidas eqt support ultra boost white tactile green adidas eqt support ultra boost beige adidas eqt support ultra boost beige adidas eqt support refined camo drop adidas eqt support refined camo drop adidas eqt support refined running whitecamo adidas eqt support 93 primeknit og colorway ba7506 adidas eqt running support 93 adidas eqt support 93

nginx server status monitor

<Category: 小道消息>


弄了个小东西来监控站点nginx status信息,没有找到现成的(轻量级的),需要的点击这里下载:NginxStatusMonitor
有简单的配置文件,两个参数:status地址,刷新时间。

至于nginx怎么开启status,看这里:
http://wiki.nginx.org/HttpStubStatusModule

状态信息简单说明:

active connections — number of all open connections including connections to backends

server accepts handled requests — nginx accepted 16630948 connections, handled 16630948 connections (no one was closed just it was accepted), and handles 31070465 requests (1.8 requests per connection)

reading — nginx reads request header

writing — nginx reads request body, processes request, or writes response to a client

waiting — keep-alive connections, actually it is active - (reading + writing)

本文来自: nginx server status monitor

log4net udpappender 广播设置

<Category: .NET>

配置文件里面添加:

如果要广播到局域网,你的ip段是192.168.1.X,则设置
文档说明在这里:http://logging.apache.org/log4net/release/sdk/log4net.Appender.UdpAppender.RemoteAddress.html

另外在windows7下,还因为ipv6的关系,如果使用localhost,可能得到的ip不是127.0.0.1而是::1,并且log4net目前貌似不支持ipv6的神址,所以必须host里面去掉ipv6的映射。

本文来自: log4net udpappender 广播设置

Natural Language Toolkit Install

<Category: NLP>

http://www.nltk.org/download

阅读这篇文章的其余部分

本文来自: Natural Language Toolkit Install

jps&jstack&jmap

<Category: Linux>
  • jps: List your java processes
  • jstack: Get the call stack for a given Java process
  • jmap: Show Memory Map
  • jinfo
    jps -mlvV
    jps -l -m

本文来自: jps&jstack&jmap

Diving Into ElasticSearch (3) 编写自定义分词插件

<Category: Diving Into ElasticSearch>

今天介绍下怎么样编写一个自己的分词插件,开始之前,先介绍下ES的项目结构:

2011-07-13_231544

分别介绍下吧:

.idea:IDEA的项目配置文件

bin:可执行脚本文件

config:配置文件

gradle:精简版的gradle

lib:里面主要放了sigar用来做资源监控

modules:ES主要模块在这里了

plugins:插件都放这里啦

plugins里面按类型分了好多目录,今天我们来看怎么自定义一个分词插件,所以放analysis目录里面。

我们先移植一个开源的IKAnalyzer到ES里面吧。

第一步,先在plugins下建立目录ik

完整路径如下:elasticsearch\plugins\analysis\ik

下面建立src目录和build目录、并建立文件build.gradle(内容从icu里面的build.gradle拷贝出来,然后做相应的调整,如下图所示)

2011-07-14_000407

第二步,新建目录src/main/java/org

第三步,在java下新建配置文件es-plugin.properities,里面一行指定当前插件的入口类(实现ES插件接口的类),如下图所示

2011-07-14_001303

 

第四步,在.idea目录里面,找到modules.xml,将我们自定义的module添加到工程中,注意路径,完了之后,会发现plugin下面的ik目录会变粗,说明该目录已经成为了项目中的一个module了。

2011-07-14_002422

第五步,在.idea/modules目录里面新建插件的配置文件如plugin-analysis-ik.iml,内容有下图所示

2011-07-14_001513

第六步,右键点击项目,选择Open Module Setting

应该会看到ik的模块配置,选中,然后分别设置目录的属性(有排除、源代码、测试三种),设置好之后如下图所示

2011-07-14_000744

第七步,在.idea/modules/里面的elasticsearch-root.iml加上一句,将我们的自定义module添加进去,如下图所示

2011-07-14_002023

最后一步,在elasticsearch根目录的setting.gradle文件里,添加一行来打包ik,如下图所示

2011-07-14_002946

配置的工作基本上到此结束,接着就是实现自己的AnalyzerProvider和AbstractPlugin了,具体代码可以看这里https://github.com/medcl/elasticsearch/commit/21abad12a0096173e8836dd042ca403751ab7ad1,就不一一列举了。

开始试验一下吧,默认bootstrap模式会加载所有插件,所有可以直接使用ik-analysis的插件。

curl –XGET http://localhost:9200/index/_analyze?text=%e8%84%91%e6%ae%8b%e7%89%87%e8%ae%a9%e4%bd%a0%e8%84%91%e6%ae%8b%ef%bc%8c%e7%a5%9e%e5%a5%87%e7%9a%84%e5%b0%8f%e8%8d%af%e4%b8%b8%e5%95%8a&analyzer=ik

通过服务端的日志,可以看到正确加载词库了。

2011-07-14_004324

刚刚分词的结果页出来了,ik正确加载了我自定义的词组“脑残片”,分词的结果也是正确的

2011-07-14_004615

本文来自: Diving Into ElasticSearch (3) 编写自定义分词插件

Diving Into ElasticSearch (2) 开发环境搭建

<Category: Diving Into ElasticSearch>

今天介绍下ElasticSearch开发环境的搭建,ElasticSearch本身就已经够强大了,基本上满足各种要求,但是在中文分词方面,自带的几个分词器还是捉襟见肘,但是,不要急,ElasticSearch系统提供了很灵活的插件机制,你可以很方便的编写自定义的插件(ES自带很多功能也同样是以插件的方式来提供的,如Transport插件、River插件等),好,首先咱们第一步就是搭建好开发环境。

阅读这篇文章的其余部分

本文来自: Diving Into ElasticSearch (2) 开发环境搭建

Diving Into ElasticSearch (1) 序

<Category: Diving Into ElasticSearch, 搜索>

You know,For Search~

打算写一系列的关于ElasticSearch的文章,一部分内容来自翻译,一部分来自自己的使用心得和调试过程。
一方面可以系统的整理下相关东西,另外也方便自己快速查找。

希望通过这些文章可以让更多的人来了解ElasticSearch。

Allright,先简单介绍下ElasticSearch吧,ElasticSearch的作者是Shay Banon (kimchy是同一个人哦),另一开源搜索项目Compass的作者,用过compass的人应该都知道,compass能够方便的为ORM框架添加搜索功能(即OSEM),简单配置即可,但是正因为使用简单,反而缺少了灵活性(和Hibernate.Search一样,同样折腾过),另外kimchy以前还是GigaSpaces的分布式专家,在Compass3.0的开发和思考中,作者加入了更多的分布式方面的元素,到最后,作者的开发重心基本上全部转到ElasticSearch上来,于是早期的ElasticSearch除了继承了很多Compass的特性之外还有大量的新的特性,比如就有如下一些显著特性(也是刚开始最吸引我的地方):Json数据格式、RESTful访问接口,Shard+Replica、Auto-Discovery、Zero-Config等,想知道ElasticSearch诞生的前因后果,可以看看作者的这篇博文:http://www.kimchy.org/the_future_of_compass/,总之ElasticSearch就这样诞生了。

相关链接:

ElasticSearch:http://www.elasticsearch.org/

源码Host在Github上:http://github.com/elasticsearch

#elasticsearch @ Freenode

@elasticsearch @Twitter

Google Group http://groups.google.com/a/elasticsearch.com

 

核心特性:

Schema Free & Document Oriented:灵活,

Schema Mapping:精确控制

Multi Tenancy:租户隔离(支持多index、多type,同一index下可以有多个类型,支持同时对多个index和多个type的查询)

Settings:Per-Index配置,动态配置,武装到牙齿

Distributed:分布式、动态伸缩、去中心化

Gateway:多种持久化策略

… …

下面是为本系列文章草拟的一个大纲:

1.安装配置

2.索引及查询

3.QueryDSL

4.Mapping

5.Index Setting

5.Index Template

6.Cluster Health

7.Thrift

9.分词器配置

8.自定义分词插件

9.服务器部署及配置优化

… …

ElasticSearch现在版本0.17,功能丰富强大,后面我再带大家一一领略,另外本大纲也会动态调整更新。

关于ES的介绍,还可以看看我之前作的一个简单PPT:quick intro to elasticsearch
和kimchy在berlinbuzzwords 2011的ppt
The Road to a Distributed, (Near) Real Time, Search Engine

本文来自: Diving Into ElasticSearch (1) 序

Hive derby lock及目录权限错误

<Category: Hadoop>

FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
NestedThrowables:
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
Hive history file=/tmp/dev/hive_job_log_dev_201107062337_381665684.txt
FAILED: Error in semantic analysis: line 1:83 Exception while processing raw_daily_stats_table: Unable to fetch table raw_daily_stats_table

查看hive配置文件/etc/hive/conf/hive-default.xml,找到你的元数据存放位置

打开hdfs目录发现
/user/hive/warehouse

raw_daily_stats_table 目录的权限成root了,但是我是以dev身份执行的,

执行:

结果发现还是报,神啊

FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
NestedThrowables:
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

打开配置文件/etc/hive/conf/hive-site.xml发现如下节点

然后定位到相应目录

db.lck 干掉, dbex.lck干掉

再跑hadoop相关脚本,ok~

本文来自: Hive derby lock及目录权限错误

vsftpd 533

<Category: 问题>

 

 

LumiSoft.Net.FTP.Client.FTP_ClientException : 553 Could not create file.

 

[dev@platformB dailyrawdata]$ /usr/sbin/setsebool -P ftp_disable_trans 1
setsebool:  SELinux is disabled.

 

/etc/init.d/vsftpd restart

本文来自: vsftpd 533

热门话题,时间及空目录的处理

<Category: Hadoop, Linux>

 

先查看hadoop目录的文件数,然后再决定是不是在input里面加上该目录
[dev@platformB dailyrawdata]$  hadoop fs -ls /trendingtopics |wc -l
3

计算时间的方法
[dev@platformB dailyrawdata]$ lastdate=20110619
[dev@platformB dailyrawdata]$ echo $lastdate
20110619
[dev@platformB dailyrawdata]$ echo date --date "-d $lastdate + 1day" +"%Y%m%d"
20110620

[dev@platformB dailyrawdata]$ echo D9=date --date "now -20 day" +"%Y%m%d"
D9=20110530

 

[dev@platformB dailyrawdata]$ D1=date --date "now" +"%Y/%m/%d"
[dev@platformB dailyrawdata]$ echo $D1
2011/06/20

注:等号后面不能有空格,如下面:

[dev@platformB dailyrawdata]$ D1= date --date "now" +"%Y/%m/%d"
-bash: 2011/06/20: No such file or directory

 

拷贝今天的文件到指定目录

DAYSTR=date --date "now" +"%Y/%m/%d"

hadoop fs -copyFromLocal dailyrawdata/* /trendingtopics/data/raw/$DAYSTR

 

慢着,当目录下文件为空的时候,Hadoop Stream Job的根据你指定的Input Pattern找不到文件的时候会抛异常,结果就造成了Job的失败。

找了半天也没有找到好的办法(那个知道比较好的办法,还请不吝赐教啊),只能先判断目录是否为空,为空则将文件夹重定向到一个空文件。

#touch blank file
BLANK=”/your folder/temp/blank”
hadoop fs -touchz $BLANK

#define a function to check hdfs files
function check_hdfs_files(){

#run hdfs command to check the files
hadoop fs -ls $1 &>/dev/null

#if file match is zero
#check file exists
if  [ $? -ne 0 ]
then
eval “$2=$BLANK”
echo “can’t find any files,use blank file instead”
fi

return $?
}

 

D0=date --date "now" +"/your folder/%Y/%m/%d/${APPNAME}-${TENANT}*"
D1=date --date "now -1 day" +"/your folder/%Y/%m/%d/$APPNAME-$TENANT*"

#check file exists
check_hdfs_files $D0 “D0”
check_hdfs_files $D1 “D1”

本文来自: 热门话题,时间及空目录的处理