按月份归档:7月 2013

多jdk共存

笔者是一个java开发者,很蛋疼的在电脑上装了好几个版本的jdk,因为有些软件对jvm版本有要求,比如一些不支持64位jvm等。

环境变量为 64位jdk7.但是有些软件依赖 32位的jvm,没办法。写了一个脚本,应对此类问题。比如PowerDesigner

set JAVA_HOME=C:\Program Files\Java\jdk1.6.32
set PATH=%JAVA_HOME%\bin;%PATH%
start D:\"Program Files (x86)"\Sybase\"PowerDesigner 15"\pdshell15.exe

这样就不影响其他的环境,指定了jdk版本给该软件。哈哈小技巧而已。

安装strom

第0步,安装jdk
从oracle官方下载jdk6,xxx.bin的。给它执行权限 chmod a+x xxx.bin
./xxx.bin
然后把解压出来的java目录放到/usr/java/jdk,
然后配置环境变量(不懂vi的,看一眼手册去)
vim /etc/profile
 export JAVA_HOME=/usr/java/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre
保存退出
source /etc/profile
sudo update-alternatives –install /usr/bin/java java /usr/java/jdk/bin/java 300
sudo update-alternatives –install /usr/bin/javac javac /usr/java/jdk/bin/javac 300
sudo update-alternatives –install /usr/bin/jar jar /usr/java/jdk/bin/jar 300
sudo update-alternatives –config java
第一步,安装Python2.7.2
wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
tar zxvf Python-2.7.2.tgz
cd Python-2.7.2
./configure
make
make install
vi /etc/ld.so.conf
追加/usr/local/lib/
sudo ldconfig
第二步,安装zookeeper
wget http://labs.mop.com/apache-mirror/zookeeper/zookeeper-3.3.5/zookeeper-3.3.5.tar.gz
tar -zxvf zookeeper-3.3.5.tar.gz
cp -R zookeeper-3.3.5 /usr/local/
ln -s /usr/local/zookeeper-3.3.5/ /usr/local/zookeeper
vim /etc/profile (设置ZOOKEEPER_HOME和ZOOKEEPER_HOME/bin)
export ZOOKEEPER_HOME=”/usr/local/zookeeper”
export PATH=$PATH:$ZOOKEEPER_HOME/bin
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg (用zoo_sample.cfg制作$ZOOKEEPER_HOME/conf/zoo.cfg)
mkdir /var/zookeeper
mkdir /var/log/zookeeper
根据Zookeeper集群节点情况,在conf目录下创建Zookeeper配置文件zoo.cfg:
tickTime=2000
dataDir=/var/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.0=192.168.1.11:2888:3888
其中,dataDir指定Zookeeper的数据文件目录;其中server.id=host:port:port,id是为每个Zookeeper节点的编号,保存在dataDir目录下的myid文件中,zoo1~zoo3表示各个Zookeeper节点的hostname,第一个port是用于连接leader的端口,第二个port是用于leader选举的端口。
在dataDir目录下创建myid文件,文件中只包含一行,且内容为该节点对应的server.id中的id编号。
第三步,安装zeromq以及jzmq
jzmq的安装貌似是依赖zeromq的,所以应该先装zeromq,再装jzmq。
1)安装zeromq:
wget http://download.zeromq.org/zeromq-2.2.0.tar.gz
tar zxf zeromq-2.2.0.tar.gz
cd zeromq-2.2.0
./configure
make
make install
sudo ldconfig (更新LD_LIBRARY_PATH)
zeromq安装完成。
注意:如有有依赖报错,需要安装:
jzmq dependencies 依赖包
sudo yum install uuid*
sudo yum install libtool
sudo yum install libuuid
sudo yum install libuuid-devel
2)安装jzmq
yum install git
git clone git://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
make install
然后,jzmq就装好了.
注意:在./autogen.sh这步如果报错:autogen.sh:error:could not find libtool is required to run autogen.sh,这是因为缺少了libtool,可以用#yum install libtool*来解决。
第四步,安装Storm
wget http://cloud.github.com/downloads/nathanmarz/storm/storm-0.8.1.zip
unzip storm-0.8.1.zip
mv storm-0.8.1 /usr/local/
ln -s /usr/local/storm-0.8.1/ /usr/local/storm
vim /etc/profile
export STORM_HOME=/usr/local/storm-0.8.1
export PATH=$PATH:$STORM_HOME/bin
首先弄好环境:
启动zookeeper:
zkServer.sh  start
配置storm:
文件在/usr/local/storm/conf/storm.yaml
内容:
 storm.zookeeper.servers:
     – 192.168.1.11
 storm.zookeeper.port: 2181
 nimbus.host: “192.168.1.11”
 storm.local.dir: “/home/storm/workdir”
 supervisor.slots.ports:
  – 6700
  – 6701
  – 6702
  – 6703
这个脚本文件写的不咋地,所以在配置时一定注意在每一项的开始时要加空格,冒号后也必须要加空格,否则storm就不认识这个配置文件了。
说明一下:storm.local.dir表示storm需要用到的本地目录。nimbus.host表示那一台机器是master机器,即nimbus。storm.zookeeper.servers表示哪几台机器是zookeeper服务器。storm.zookeeper.port表示zookeeper的端口号,这里一定要与zookeeper配置的端口号一致,否则会出现通信错误,切记切记。当然你也可以配superevisor.slot.port,supervisor.slots.ports表示supervisor节点的槽数,就是最多能跑几个worker进程(每个sprout或bolt默认只启动一个worker,但是可以通过conf修改成多个)。
启动Storm各个后台进程
最后一步,启动Storm的所有后台进程。和Zookeeper一样,Storm也是快速失败(fail-fast)的系统,这样Storm才能在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么Storm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。
以下是启动Storm各个后台进程的方式:
1 Nimbus: 在Storm主控节点上运行”bin/storm nimbus >/dev/null 2>&1 &”启动Nimbus后台程序,并放到后台执行;
2 Supervisor: 在Storm各个工作节点上运行”bin/storm supervisor >/dev/null 2>&1 &”启动Supervisor后台程序,并放到后台执行;
3 UI: 在Storm主控节点上运行”bin/storm ui >/dev/null 2>&1 &”启动UI后台程序,并放到后台执行,启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。
启动ui,可以通过 ip:8080/ 查看运行i情况。
向集群提交任务
1)启动Storm Topology:
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
其中,allmycode.jar是包含Topology实现代码的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3为org.me.MyTopology执行时需要传入的参数。
2)停止Storm Topology:
storm kill {toponame}
其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。
https://github.com/nathanmarz/storm-starter
是maven项目,直接导入maven项目即可。但是国内无法下载twitter4j,需要自己手动下载,然后将pom中的twitter4j换成本地。Mvn install 即可。
使用命令启动
storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology test2
http://{nimbus host}:8080  查看test2 运行情况
storm kill test2 关闭
注:本人使用windows 64位系统。vmware的8.x的虚拟机。服务器为centos 6.x 64位,jdk为 oracle 6 ,jvm为hotspot。虚拟机内存为 1.3g,注意,本人笔记本为 因特尔处理器,i5系列。需要在bios中开启虚拟化功能,默认不开启。我同学笔记本貌似amd,安装不了 centos 64位。 由于内存限制,只能开一台虚拟机,没办法模拟真实的集群了。

写给笨小鸟

我转载的一片文章。一个女生写的。不多说,也不评论

写给笨小鸟

                     ——关于爱情
        不必太英俊,看着顺眼就行,我不漂亮,帅哥我没信心把握住,我不想带的出去,带不回来。至少比我高,我累了的时候可以埋在你的胸膛哭泣。
        学历高低无所谓,有共同语言就好。不想你说句话我去百度,我说句话你去谷歌,大概没人愿意过这样的日子。
        抽烟喝酒打游戏都可以,但要适可而止,不能迷恋,不能成瘾。看美女可以,我陪你看,我也喜欢看帅哥。
        善良、活泼、开朗,热爱生活,享受生活,珍惜我们一起走过的分分秒秒。人生苦短,遇见个知心人不容易,我不喜欢吵架,也不会吵架,我喜欢静,吵吵闹闹的生活我会发疯。有问题有矛盾了,大家坐下来,我给你泡壶茶,放一段纯音乐,静下心来,你慢慢讲,我细细听,我不对,我改,你不对,你改。互相多包容,多沟通,此乃爱情长久之道。对别人也要这样,不能不分青红皂白破口大骂,不要冲动,要冷静,得绕人处且饶人,要泰山崩于前而面不改色,要有担当。
        你的家境或许殷实,但请你记住,生命是个独立的个体,不能坐吃山空,人活着总该实现自己的价值。
        做一行,爱一行,三百六十行,行行出状元,要有上进心,有理想,可以不成功,但不能不去努力。成功了我在,失败了我依然在。你是太阳,我是地球,我要公转也要自转,我要有我的朋友圈,有我的闺蜜,知己,蓝颜。
        你可以迷茫,但你要清楚自己在干什么,自已将要干什么,你的未来规划里一定要有我,我不求有车有房,既要能一起厨房,也要能一起流浪。
        没有感情经历的人便没有正确的爱情观,我不想用自己的青春去调教别人的老公。我会用感恩的心态谢谢我的过去让我成长,也会用感恩的心态谢谢你的过去放弃你,让我们有机会遇到,我会有骄傲的感觉,她驾驭不了的男人我能。
        我不是花季雨季,不是90后,不会每天缠着你,腻着你,不会要你一天想我八百遍,不会规定一天几十个电话,不用每个节日都轰轰烈烈,我喜欢平平淡淡,细水长流,我要的是简单而持久的小幸福,我不会无理取闹。我也不会经常想你,因为你一直在我心里。
        我不相信一见钟情,我们相遇相知相亲相爱,这必然是个漫长的过程,会有挫折,泪水,磨难,距离,时间等各个方面的阻力,如果某一方坚持不住,想放弃,或是移情别恋,或是突然不想恋爱,都要尽早坦白,不拖泥带水,不耽误对方的青春,不浪费对方的感情,对自己和他人都要负责。记得北京青年里第一集,登记前男孩子变卦说要重新开始人生,我看到那里很气愤,我不会像电视剧里的女孩那么妥协退出,我会把你打残,你丫的早干嘛了。
        你要记住,男人30的时候,只要有事业就是砖石王老五,年龄不是问题,大学毕业生随你挑,女孩子30即便是事业有成,也是个大龄剩女。希望你有责任心,不能给我未来请你离我远点。当然,如果真的不幸,过几年我被你甩,我也不会吃安眠药,要吃也是喂你吃。女人要爱自己,什么时候都不能作践自己,别总一哭二闹,别把自己弄得跟窦娥似的,没事的时候约会,逛街,美食,读书,写字,一个都不能少。
        不管你有钱没钱,都要孝敬父母。真的有缘修成正果,家务谁有空谁就做,你做了我会奖励你,我做了你也不要认为这是理所当然。人生漫漫,不会一帆风顺,会有大起大落,会有下岗,失业,破产,等不可抗拒的社会因素,也会有水灾,地震,非典,车祸等不可抗拒的自然因素。我们都要坚强,无论遇到什么事都不可以放弃彼此,不可以放弃人生。挫折只是人生的一段旅程,不要说累赘,不要说负担,无论什么事,记得我在身边,能在对方遭遇不测的时候不离不弃的才是真的感情。你若不弃,我必相依。