newLISP提供了一个简单的MapReduce的方式,利用net-eval函数,能够向远程执行这newlisp服务进程的机器发起调用。
本文介绍最简单的方法:
首先server启动newlisp进程
newlisp -l -c -d 4711 &
-l 代表记录日志,默认是打印到终端
-c 是不会出现常见的newlisp的会话终端
-d 是在连接之间保存状态。一个边际效应就是兴许的请求必须等待前面的请求已经完毕才干发出
以下来试用一下:
如果在A机器已经使用了上面的命令启动了newLISP服务进程
如今在B机器上执行newLISP的shell,输入以下的命令:
> (net-eval "123.126.32.82" 4711 '(+ 3 4))
7
简单的加法没有问题。
再看文件操作:
> (net-eval "123.126.32.82" 4711 '(exec "touch /home/chenshu/work/mobile_data/code/export/tt"))
newLISP
到A机器检查,发现的确出现了文件tt
[chenshu@hadoopMaster export]$ ls tt -alh
-rw-rw-r-- 1 chenshu chenshu 0 May 20 19:50 tt
如今在A机器上准备一个newLISP脚本文件
#!/usr/bin/newlisp
(println "ok")
(make-dir "/home/chenshu/work/mobile_data/code/export/mm")
(exit)
远程执行:
(net-eval "123.126.32.82" 4711 '(exec "newlisp /home/chenshu/work/mobile_data/code/export/test.lsp"))
结果是果然创建了mm文件夹。
可是这仅仅是简单的应用,复杂了远程调用就须要耐心调试。
至少眼下我的test.lsp如果调用hive命令读取schema。并连接mysql创建表。就会失败。
还须要细致检查,查看原因。