write down,forget

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”

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

The "GenerateResource" task failed unexpectedly.

<Category: 问题>

Error    9    The “GenerateResource” task failed unexpectedly.
System.TypeInitializationException: The type initializer for ‘Microsoft.Build.Utilities.FileTracker’ threw an exception. —> System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Build.Utilities.FileTracker..cctor()
— End of inner exception stack trace —
at Microsoft.Build.Utilities.FileTracker.ForceOutOfProcTracking(ExecutableType toolType, String dllName, String cancelEventName)
at Microsoft.Build.Tasks.GenerateResource.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)    WorkflowMonitor

<?xml version=”1.0″ encoding=”utf-8″?>
<Project DefaultTargets=”Build” xmlns=”http://schemas.microsoft.com/developer/msbuild/2003″ ToolsVersion=”4.0″>
<PropertyGroup>
<TrackFileAccess>false</TrackFileAccess>
….

谁有没有终极解决办法。。。

 –有了–

修改所有Microsoft.Common.targets

 <TrackFileAccess Condition=”‘$(TrackFileAccess)’ == ””>false</TrackFileAccess>

—–

Find the file: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets

Locate the <GenerateResource> tag at Line 1835 and delete the attributes TrackFileAccess and TrackerLogDirectory

http://social.msdn.microsoft.com/Forums/en/csharpide/thread/88db71cf-a501-428d-91fa-1535d82d8014

http://www.go4answers.com/Example/error-msb4018-generateresource-task-25286.aspx

本文来自: The "GenerateResource" task failed unexpectedly.