访问Hive接口有thrift,只要调用封装好的方法就行了。之前因为Socket的阻塞问题,经常会发生Hive接口读取超时,修改一下Thrift里面的TSocket.php就好了。
数据库的管理方面主要就是获取网页变量,然后拼sql字符串.
核心内容是查询部分,这个是比较有趣的地方,最早的一版查询是完全用thrift完成的,查询特别慢不说,关键是没有进度返回,而且如果中间关闭窗口就彻底找不到任务了。当时十分羡慕淘宝的Hive界面,有map/reduce进度条。于是自己调了两天,写了一个获取map/reduce进度的方法,虽然没有进度条,但是可以读取到Hive执行的map/reduce进度,并实时返回。其核心思路是既然hive命令行可以将mr进度打印到控制台上的stdout和stderr,那就写个程序读命令行执行的stdout和stderr就好了。但是要实时输出到网页的话,就需要边读边写,这对php来说就比较难了。对于php程序员来说,绝大多数是开发网页的,用到线程和进程管理的非常少,极少。根据php针对网页的特点。如果不用ajax,php本身无法对进程进行异步处理。但是系统执行是在后端的,跟网页无关,所以其实这是一个php在操作系统方面进行异步执行的问题。pcntl是子进程管理,比较方便,但是需要在php编译的时候enable,我不想给自己找麻烦,特别是不想给其他用户造成困难,所以最后选择了proc_open来新开一个进程完成异步的处理。至于为什么没有选择Java开发,或者python开发,也是考虑其实相比于php,java和python在网页方面的开发还是偏小众,配置LNMP可能会更大众化,或许可以让大家上手大数据更轻松一些。但是也不排除将来会用java或者python再写一版,反正写完交给别人自己查数管集群,我也没事干,闲着也是闲着。