paulwong

#

ZOOKEEPER资源

ZooKeeper实际上是一个小型的分布式文件系统,外加通知功能。


ZooKeeper典型应用场景一览
http://www.coder4.com/archives/3856


!!!!!ZooKeeper伪分布式集群安装及使用
http://blog.fens.me/hadoop-zookeeper-intro/

!!!ZOOPKEEPER之配置管理、分布式队列、会话、缓存等管理
http://www.cnblogs.com/xguo/category/495322.html

ZooKeeper实现分布式队列Queue
http://blog.fens.me/zookeeper-queue/


ZooKeeper实现分布式FIFO队列
http://blog.fens.me/zookeeper-queue-fifo/



!基于ZooKeeper的分布式Session实现
http://blog.csdn.net/jacktan/article/details/6112806 


ZOOPKEEPER和SPRING整合,作为PROPERTY数据的来源
https://github.com/james-wu-shanghai/spring-zookeeper
http://stackoverflow.com/questions/9940476/zookeeper-for-java-spring-config
https://github.com/ryantenney/zookeeper-spring


http://rdc.taobao.com/team/jm/archives/tag/zookeeper 

分布式服务框架 Zookeeper -- 管理分布式环境中的数据
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

zookeeper
http://baike.baidu.com/view/3061646.htm

为什么要使用ZooKeeper
http://blog.csdn.net/franklysun/article/details/6424213

使用zookeeper管理多个hbase集群
http://koven2049.iteye.com/blog/1150484

Description of how HBase uses ZooKeeper
http://wiki.apache.org/hadoop/ZooKeeper/HBaseUseCases

hadoop+hbase+zookeeper集群安装方法
http://linuxjcq.blog.51cto.com/3042600/760634
http://marysee.blog.51cto.com/1000292/629405

posted @ 2012-10-02 10:20 paulwong 阅读(504) | 评论 (0)编辑 收藏

HADOOP1.0.3+HBASE0.94.1伪单机环境配置实录

1.在host中加入master 127.0.0.1 

2.实现无需密码登录ssh 

3.hadoop配置文件 

core-site.xml 
   <?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>
  <name>hadoop.tmp.dir</name>
  <value>/Users/paul/Documents/PAUL/DOWNLOAD/SOFTWARE/DEVELOP/HADOOP/hadoop-tmp-data</value>
  <description>A base for other temporary directories.</description>
</property>
 
<property>
  <name>fs.default.name</name>
  <value>hdfs://master:9000</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
</property>

</configuration>

hdfs-site.xml 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>


<property>
  <name>dfs.replication</name>
  <value>1</value>
  <description>Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  </description>
</property>

<!--
  <property>
    <name>dfs.name.dir</name>
    <value>/Users/paul/Documents/PAUL/DOWNLOAD/SOFTWARE/DEVELOP/HADOOP/hadoop-tmp-data/hdfs-data-name</value>
  </property>

  <property>
    <name>dfs.data.dir</name>
    <value>/Users/paul/Documents/PAUL/DOWNLOAD/SOFTWARE/DEVELOP/HADOOP/hadoop-tmp-data/hdfs-data</value>
  </property>
-->

</configuration>

mapred-site.xml 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>


<property>
  <name>mapred.job.tracker</name>
  <value>master:9001</value>
  <description>The host and port that the MapReduce job tracker runs
  at. If "local", then jobs are run in-process as a single map
  and reduce task.
  </description>
</property>

<property>
<name>mapred.tasktracker.tasks.maximum</name>
<value>8</value>
<description>The maximum number of tasks that will be run simultaneously by a
a task tracker
</description>
</property>

</configuration>

masters/slaves 
master 

4. 格式化namenode 

5. 启动hadoop 

6. hbase配置文件 

hbase-site.xml 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/**
 * Copyright 2010 The Apache Software Foundation
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */Users/paul/Documents/PAUL/DOWNLOAD/SOFTWARE/DEVELOP/HADOOP/hadoop-tmp-data
 */

-->
<configuration>

  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
  </property>

  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>

  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost</value><!--单机配这个-->
  </property>

</configuration>

7. 启动hbase

posted @ 2012-10-01 22:15 paulwong 阅读(832) | 评论 (0)编辑 收藏

hudson+maven+sonar+svn 快速搭建持续集成服务

http://www.blogjava.net/Nirvana/archive/2012/09/10/387404.html

http://www.blogjava.net/Nirvana/archive/2012/09/10/387408.html

posted @ 2012-09-26 23:15 paulwong 阅读(691) | 评论 (0)编辑 收藏

用ab命令来对 JVM进行内存分析的一个例子

1、JVM的启动参数
我是这样设置的:
  java -Xmx1024m -Xms1024m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m

启动tomcat之后,使用 jmap -heap `pgrep -u root java`,得到如下信息:

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 1073741824 (1024.0MB)
   NewSize          = 1048576 (1.0MB)
   MaxNewSize       = 4294901760 (4095.9375MB)
   OldSize          = 4194304 (4.0MB)
   NewRatio         = 4
   SurvivorRatio    = 4
   PermSize         = 12582912 (12.0MB)
   MaxPermSize      = 16777216 (16.0MB)
Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 178913280 (170.625MB)
   used     = 51533904 (49.14656066894531MB)
   free     = 127379376 (121.47843933105469MB)
   28.80384508070055% used
Eden Space:
   capacity = 143130624 (136.5MB)
   used     = 51533904 (49.14656066894531MB)
   free     = 91596720 (87.35343933105469MB)
   36.00480635087569% used
From Space:
   capacity = 35782656 (34.125MB)
   used     = 0 (0.0MB)
   free     = 35782656 (34.125MB)
   0.0% used
To Space:
   capacity = 35782656 (34.125MB)
   used     = 0 (0.0MB)
   free     = 35782656 (34.125MB)
   0.0% used
tenured generation:
   capacity = 859045888 (819.25MB)
   used     = 1952984 (1.8625106811523438MB)
   free     = 857092904 (817.3874893188477MB)
   0.22734338494383202% used
Perm Generation:
   capacity = 12582912 (12.0MB)
   used     = 6656024 (6.347679138183594MB)
   free     = 5926888 (5.652320861816406MB)
   52.897326151529946% used

------------------------------------------华丽的分割线---------------------------------------

按照这个参数来计算的话(可以参考这里:http://blog.sina.com.cn/s/blog_68158ebf0100wp83.html
-Xmx1024m -Xms1024m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m
-Xmx1024m 最大堆内存为 1024M
-Xms1024m 初始堆内存为 1024M
-XX:NewRatio=4 

则 年轻代:年老代=1:4  1024M/5=204.8M
故 年轻代=204.8M  年老代=819.2M
-XX:SurvivorRatio=4
则年轻代中 2Survivor:1Eden=2:4 204.8M/6=34.13333333333333M
故 Eden=136.5333333333333M  1Suivivor=34.13333333333333M
用 jmap -heap <pid>
查看的结果 与我们计算的结果一致

-----------------------------------华丽的分割线-------------------------------------------

3、编写测试页面
    在网站根目录里新建页面perf.jsp,内容如下:
<%intsize = (int)(1024 * 1024 * m);byte[] buffer = new byte[size];Thread.sleep(s);%>
注:m值用来设置每次申请内存的大小,s 表示睡眠多少ms

4、使用jstat来监控内存变化
·jstat命令的用法和介绍,参考这里http://blog.sina.com.cn/s/blog_68158ebf0100woyh.html
这里使用 jstat -gcutil `pgrep -u root java` 1500 10 
   再解释一下,这里有三个参数:
·pgrep -u root java --> 得到java的进程ID号
·1500 --> 表示每隔1500ms取一次数据
·10 --> 表示一共取10次数据

5、用ab来进行压测
压测的命令:[root@CentOS ~]# ab -c150 -n50000 "http://localhost/perf.jsp?m=1&s=10"
注:这里使用150个线程并发访问,一共访问50000次。
    另外我做了apache与tomcat的整合,过程见:http://blog.sina.com.cn/s/blog_68158ebf0100wnvx.html
默认情况下你可以使用 http://localhost:8080/perf.jsp?m=1&s=10 来访问。

--------------------------------------------华丽的分割线----------------------------------------

下面开始进行实验:
·先启动Java内存的监听:
    [root@CentOS ~]# jstat -gcutil 8570 1500 10 
·在开启一个终端,开始压测:
    [root@CentOS ~]# ab -c150 -n50000 "http://localhost/perf.jsp?m=1&s=10"
两个命令结束之后的结果如下:

jstat:
[root@CentOS ~]# jstat -gcutil 8570 1500 10 
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  0.06   0.00  53.15   2.03  67.18     52    0.830     1    0.218    1.048
  0.00   0.04  18.46   2.03  67.18     55    0.833     1    0.218    1.052
  0.03   0.00  28.94   2.03  67.18     56    0.835     1    0.218    1.053
  0.00   0.04  34.02   2.03  67.18     57    0.836     1    0.218    1.054
  0.04   0.00  34.13   2.03  67.18     58    0.837     1    0.218    1.055
  0.00   0.04  38.62   2.03  67.18     59    0.838     1    0.218    1.056
  0.04   0.00   8.39   2.03  67.18     60    0.839     1    0.218    1.058
  0.04   0.00   8.39   2.03  67.18     60    0.839     1    0.218    1.058
  0.04   0.00   8.39   2.03  67.18     60    0.839     1    0.218    1.058
  0.04   0.00   8.39   2.03  67.18     60    0.839     1    0.218    1.058

结果简单解析:
    可以看到JVM里S0和S1始终有一个是空的,Eden区达到一定比例之后就会产生Minor GC,由于我这里的Old Generation 区设置的比较大,所以没有产生Full GC。

ab
[root@CentOS ~]# ab -c150 -n50000 "http://localhost/perf.jsp?m=1&s=10"
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Finished 50000 requests
Server Software:        Apache/2.2.3
Server Hostname:        localhost
Server Port:            80
Document Path:          /perf.jsp?m=1&s=10
Document Length:        979 bytes
Concurrency Level:      150
Time taken for tests:   13.467648 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Non-2xx responses:      50005
Total transferred:      57605760 bytes
HTML transferred:       48954895 bytes
Requests per second:    3712.60 [#/sec] (mean)
Time per request:       40.403 [ms] (mean)   #平均请求时间
Time per request:       0.269 [ms] (mean, across all concurrent requests) 
Transfer rate:          4177.05 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1  46.5      0    3701
Processing:    10   38  70.3     36    6885
Waiting:        3   35  70.3     33    6883
Total:         10   39  84.4     37    6901
Percentage of the requests served within a certain time (ms)
  50%     37
  66%     38
  75%     39
  80%     39
  90%     41
  95%     43
  98%     50
  99%     58
 100%   6901 (longest request)

详细的分析见:http://blog.sina.com.cn/s/blog_68158ebf0100woyp.html

posted @ 2012-09-26 22:46 paulwong 阅读(538) | 评论 (0)编辑 收藏

hadoop优化

  1. 络带宽
    Hadoop集群的服务器在规划时就在统一的交换机下,这是在官方文档中建议的部署方式。

    但是我们的这台交换机和其他交换机的互联带宽有限,所以在客户端遇到了HDFS访问速度慢的问题。

    把操作集群的客户端也联入DataNode的交换机内部,解决了这个问题。

  2. 系统参数
    对ulimit -c的修改也是官方文档建议的修改,在集群只有10台服务器时,并没有遇到问题。
    随着机器增加和任务增加,这个值需要改的更大。

  3. 配置文件管理
    这个集群用的是Cloudera发行的版本,配置文件默认存在/etc/hadoop/conf位置。这是一个只有root才能修改的位置。

    为了修改方便,我把配置文件统一保存在一台机器上,修改后用脚本分发。保证所有服务器都是统一的配置。

  4. mapred.tasktracker.map.tasks.maximum
    这个参数控制每个TaskTracker同时运行的Map任务数。

    以前的设置是和CPU核数相同的,偶尔遇到任务挤占DataNode资源的问题。

    现在改成map+reduce+1==num_cpu_cores。

  5.  严格控制root权限
    Cloudera的发行版会创建一个hadoop用户,各种守护进程都应该以这个用户运行。

    曾经有误操作(/usr/lib/hadoop/bin/hadoop datanode &)导致本地的数据目录被root写入新文件,于是正确启动的hadoop用户进程无法读写。

    所以现在的集群服务器不提供日常的root权限访问。

  6. Java的GC模式
    在mapred.child.java.opts和HADOOP_OPTS都增加了-XX:+UseConcMarkSweepGC。

    JDK的文档中推荐现代多核处理器系统,采用这种GC方式,可以充分利用CPU的并发能力。

    这个改动对性能的积极影响很大。

  7. 选择正确的JDK
    这个集群有部分服务器的JDK用的是32位版本,不能创建-Xmx4g以上的进程。
    统一为x64版本的JDK。

  8. mapred.reduce.slowstart.completed.maps
    这个参数控制slowstart特性的时机,默认是在5%的map任务完成后,就开始调度reduce进程启动,开始copy过程。

    但是我们的机器数量不多,有一次大量的任务堆积在JobTracker里,每个TaskTracker的map和reduce slots都跑满了。

    由于map没有足够资源迅速完成,reduce也就无法结束,造成集群的资源互相死锁。
    把这个参数改成了0.75,任务堆积的列表从平均10个,变成了3个。

  9. mapred.fairscheduler.preemption
    这个参数设为了true。以便fairscheduler在用户最小资源不能满足时,kill其他人的任务腾出足够的资源。

    集群运行着各种类型的任务,有些map任务需要运行数小时。这个参数会导致这类任务被频繁kill,几乎无法完成。曾经有个任务在7小时内被kill了137次。

    可以通过调整fairscheduler的pool配置解决,给这种任务单独配置一个minMap==maxMap的pool。

  10. mapred.jobtracker.completeuserjobs.maximum
    限制每个用户在JobTracker的内存中保存任务的个数。
    因为这个参数过大,我们的JobTracker启动不到24小时就会陷入频繁的FullGC当中。

    目前改为5,JT平稳运行一天处理1500个任务,只占用800M内存。

    这个参数在>0.21.0已经没有必要设置了,因为0.21版本改造了completeuserjobs的用法,会尽快的写入磁盘,不再内存中长期存在了。

  11. mapred.jobtracker.update.faulty.tracker.interval和mapred.jobtracker.max.blacklist.percent
    一个写错的任务,会导致一大批TaskTracker进入黑名单,而且要24小时才能恢复。这种状况对中小规模的集群性能影响是非常大的。只能通过手工重启TaskTracker来修复。所以我们就修改了部分JobTracker的代码,暴露了两个参数:

    mapred.jobtracker.update.faulty.tracker.interval控制黑名单重置时间,默认是24小时不能改变,我们现在改成了1小时。

    mapred.jobtracker.max.blacklist.percent控制进入黑名单TT的比例,我们改成了0.2。
    我正在补充这两个参数的TestCase,准备提交到trunk中。

  12. 多用hive少用streaming
    由于streaming的方便快捷,我们做了很多基于它的开发。但是由于streaming的任务在运行时还要有一个java进程读写stdin/out,有一定的性能开销。

    类似的需求最好改用自定义的Deserializer+hive来完成。

posted @ 2012-09-24 23:28 paulwong 阅读(793) | 评论 (0)编辑 收藏

SPRING BATCH ADMIN安装实录

  1. 下载
    从云端下载文件:http://s3.amazonaws.com/dist.springframework.org/release/BATCHADM/spring-batch-admin-1.2.1.RELEASE.zip

  2. 更改JOBREPOSITRY的数据库
    支持从启动JVM时传参数,即如果启动JVM时传了-DENVIRONMENT=mysql值,则读取batch-mysql.properties文件,如未传值,则默认读batch-hsql.properties文件,如找不到此文件,才读取batch-default.properties文件,因此将batch-mysql.properties等删除,只保留default文件,里面放数据库驱动程序等信息是开发环境时的首选做法。相关的properties文件可去http://www.springsource.org/download/community中下载。顺便将JDK改成1.6,SPRING-BATCH的版本改成最新的2.1.8。

  3. 生成WAR包 
    先用MAVEN安装PARENT包,再安装ADMIN包。

  4. 部署
    打开TOMCAT,将WAR包丢进去即可,如果要在ECLIPSE中调试,将此两个PROJECT 导入到ECLIPSE中,安装RUN-JETTY-RUN插件,即可在ECLIPSE中启动JETTY,而MAVEN项目不用改成ECLIPSE的WEB项目,推荐!
    访问网址:http://localhost:8080/spring-batch-admin-sample。

  5. 部署JOB
    将job的spring配置文件和相关class如itemreader等打成jar包,放到META-INF/spring/batch/jobs/下,则会自动显示到UI中。

    <点击下载修改后的控制台> <点击下载例子>

posted @ 2012-09-23 19:36 paulwong 阅读(3316) | 评论 (0)编辑 收藏

SPRING资源下载

http://www.springsource.com/download/community

posted @ 2012-09-22 12:09 paulwong 阅读(280) | 评论 (0)编辑 收藏

Hadoop集群配置

step1:安装JDK
      1.1 sudo sh jdk-6u10-linux-i586.bin
      1.2 sudo gedit /etc/environment
          export JAVA_HOME=/home/linkin/Java/jdk1.6.0_23
          export JRE_Home=/home/linkin/Java/jdk1.6.0_23/jre
          export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      1.3 sudo gedit /etc/profile
          在umask 022之前添加以下语句:
          export JAVA_HOME=/home/linkin/Java/jdk1.6.0_23
          export JRE_HOME=/home/linkin/Java/jdk1.6.0_23/jre
          export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
          export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

更改时区:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
安装NTP:
        yum install ntp
        安装后执行
        ntpdate cn.pool.ntp.org
        即可同步国际时间..
        开机后自动同步时间:
        vi /etc/rc.d/rc.local中,最下面添加
        ntpdate cn.pool.ntp.org

关闭IPV6
在/etc/sysctl.conf结尾添加
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
重启服务器

删除IPV6的DNS服务器

step2:SSH免密码登陆
      2.1 首先在master主机上,linkin@master :~$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
      2.2 linkin@master :~$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将id_dsa.pub写入authorized_keys
      2.3 linkin@master :~/.ssh$ scp id_dsa.pub linkin@192.168.149.2:/home/linkin
      2.4 登陆到linkin主机 $cat id_dsa.pub >> .ssh/authorized_keys
            authorized_keys的权限要是600chmod 600 .ssh/authorized_keys
      2.5 在Datenode上执行同样的操作就能实现彼此无密码登陆

step3:安装hadoop
      3.1 设置hadoop-env.sh
          export JAVA_HOME=/home/linkin/jdk1.6.0_10
      3.2 配置core-site.xml
   
<property>
      
<name>hadoop.tmp.dir</name>
      
<value>/home/linkin/hadoop-0.20.2/tmp</value>
      
<description>A base for other temporary directories.</description>
</property>

 
<property>
    
<name>fs.default.name</name>
    
<value>hdfs://master:9000</value>//要写主机名
 
</property>
   
 
    
      3.3 配置hdfs-site.xml
<property>
  
<name>dfs.replication</name>
  
<value>1</value>
</property>
     

      3.4 配置mapred-site.xml
     
<property>
  
<name>mapred.job.tracker</name>
  
<value>master:9001</value>//要写主机名
</property>
     
      3.5 配置master和slaves
          master:master(主机名)slaves:linkin(主机名)这2个配置文件可以不拷贝到其它机器上,只在master上保存即可。
      3.6 配置hosts文件
     127.0.0.1 localhost (注意这里不能放其他的如机器名,否则会使hbase的master名称变成localhost)
     192.168.149.7 master
     192.168.149.2 linkin
      3.7 配置profile,在末尾追加以下内容,并输入source/etc/profile使之生效
    export JAVA_HOME=/home/linkin/jdk1.6.0_10
    export JRE_HOME=/home/linkin/jdk1.6.0_10/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$PATH
    HADOOP设置
    export HADOOP_HOME=/home/linkin/hadoop-0.20.2
    export PATH=$HADOOP_HOME/bin:$PATH
    //export PATH=$PATH:$HIVE_HOME/bin
     3.8 将hadoop-0.20.2拷贝到其它主机对应的目录下。将/ect/profile和/etc/hosts也拷贝到其它机器上。profile需要做生效操作。
step4 格式化HDFS
      bin/hadoop namenode -format
      bin/hadoop dfs -ls
step5 启动hadoop
      bin/start-all.sh
      查看HDFS http://192.168.149.7:50070
      查看JOB状态 http://192.168.149.7:50030/jobtracker.jsp

参考资源:
http://wiki.ubuntu.org.cn/%E5%88%A9%E7%94%A8Cloudera%E5%AE%9E%E7%8E%B0Hadoop

posted @ 2012-09-21 22:45 paulwong 阅读(370) | 评论 (0)编辑 收藏

SPRING BATCH 资源

http://www.cnblogs.com/gulvzhe/archive/2011/11/06/2238125.html 

http://www.ibm.com/developerworks/cn/java/j-lo-springbatch1/

单元测试例子
http://code.google.com/p/springbatchhanson/

单元测试STEP
http://code.google.com/p/springbatch-in-action/source/browse/trunk/sbia/ch15/src/test/java/com/manning/sbia/ch15/batch/integration/step/StatisticStepTest.java?r=128&spec=svn243

Spring Batch In Action例子
http://code.google.com/p/springbatch-in-action/


Pro Spring Batch例子
http://www.apress.com/9781430234524

Spring Batch官方例子
http://www.springsource.org/download/community

Spring Batch 之 Sample(固定长格式文件读写)(六)
http://mowengaobo.iteye.com/blog/1522137

SPRING BATCH REFERENCE
http://static.springsource.org/spring-batch/reference/html/index.html

posted @ 2012-09-20 13:25 paulwong 阅读(376) | 评论 (0)编辑 收藏

spring batch基本概念

如果要读一堆的文本文件到数据库,则可以使用SPRIN BATCH。

主流程:
由JobRunner启动Job,Job启动Step,Step启动TaskLet,TaskLet启动Chunk,Chunk启动ItemRader/ItemProcessor/ItemWriter。

Step之间可以设定流程,即在Step间放一个Decision,在上一步放一个Listener,根据条件把某变量值放到Context中,Decision根据此值决定下一步是哪个。

DefaultLineMapper:将STRING转成MAP

DelimitedLineTokenizer:将行以豆号分割出来放到LIST

BeanWrapperFieldSetMapper:将MAP转成VO

FlatFileItemWriter:输出到文件

DelimitedLineAggregator:对象转字符串

自定义TaskLet:如果任务不是读或写那种,就新增自定义类完成所需工作





http://www.cnblogs.com/gulvzhe/archive/2011/11/06/2238125.html 

http://www.ibm.com/developerworks/cn/java/j-lo-springbatch1/

http://www.visa4uk.fco.gov.uk/Welcome.htm

posted @ 2012-09-19 00:19 paulwong 阅读(436) | 评论 (0)编辑 收藏

仅列出标题
共112页: First 上一页 73 74 75 76 77 78 79 80 81 下一页 Last