分享

怎样通过程序控制远程集群提交运行jar包呢?

梦回三国 发表于 2015-5-27 10:20:24 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 37820

已有(6)人评论

跳转到指定楼层
tntzbzc 发表于 2015-5-27 10:51:36
java应该有自动打包工具
提交远程是完全可以的,先安装客户端,然后在提交。
具体这个只要了解原理,其实很简单。
比如hadoop吧,首先本地有个hadoop环境,有了环境,我们就可以执行
hadoop jar。。。
执行的过程中,我们需要运行程序和读取配置文件。这时候我们的程序如果设置的是远程,那么读取的就是远程的配置信息,申请的是远程的yarn。这就达到了远程的目的
下面例子参考:
[mw_shl_code=java,true]public class RemoteMapReduceService {
        public static String startJob() throws Exception {
                Job job = Job.getInstance();
                job.setJobName("xxxx");
                /***************************
                 *......
                 *在这里,和普通的MapReduce一样,设置各种需要的东西
                 *......
                 ***************************/
               
                //下面为了远程提交添加设置:
                Configuration conf = job.getConfiguration();
                conf.set("mapreduce.framework.name", "yarn");
                conf.set("hbase.zookeeper.quorum", "MASTER:2181");
                conf.set("fs.default.name", "hdfs://MASTER:8020");
                conf.set("yarn.resourcemanager.resource-tracker.address", "MASTER:8031");
                conf.set("yarn.resourcemanager.address", "MASTER:8032");
                conf.set("yarn.resourcemanager.scheduler.address", "MASTER:8030");
                conf.set("yarn.resourcemanager.admin.address", "MASTER:8033");
                conf.set("yarn.application.classpath", "$HADOOP_CONF_DIR,"
                        +"$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,"
                        +"$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,"
                        +"$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,"
                        +"$YARN_HOME/*,$YARN_HOME/lib/*,"
                        +"$HBASE_HOME/*,$HBASE_HOME/lib/*,$HBASE_HOME/conf/*");
                conf.set("mapreduce.jobhistory.address", "MASTER:10020");
                conf.set("mapreduce.jobhistory.webapp.address", "MASTER:19888");
                conf.set("mapred.child.java.opts", "-Xmx1024m");
               
                job.submit();
                //提交以后,可以拿到JobID。根据这个JobID可以打开网页查看执行进度。
                return job.getJobID().toString();
        }
}[/mw_shl_code]

回复

使用道具 举报

梦回三国 发表于 2015-5-27 11:43:43
tntzbzc 发表于 2015-5-27 10:51
java应该有自动打包工具
提交远程是完全可以的,先安装客户端,然后在提交。
具体这个只要了解原理,其实 ...

哦哦,明白你意思了,但是需要本地也安装环境哈。我也想出来一个办法,就是通过ssh先提交jar包到远程,然后在提交运行命令。但是自动打包还没想出好办法。
回复

使用道具 举报

NIITYZU 发表于 2015-5-27 17:15:41
楼主,请问一下,基于Hadoop的Web系统是怎么做的?我一直疑惑,是正常的Web项目开发,然后在后台数据处理的时候调用Hadoop集群处理数据吗?谢谢!
回复

使用道具 举报

sstutu 发表于 2015-5-27 17:23:26
NIITYZU 发表于 2015-5-27 17:15
楼主,请问一下,基于Hadoop的Web系统是怎么做的?我一直疑惑,是正常的Web项目开发,然后在后台数据处理的 ...

我们通过shell命令能实现的,同样可以通过界面实现。
如同计算发展,原先都是黑屏,现在都是window界面或则其它方式。
hadoop也是同样的道理。
实现方式应该有两种:
1.通过Java web直接调用api,应该跟shell api是差不多的
2.楼主可以研究spring hadoop,不过这方面资料比较少一些
回复

使用道具 举报

梦回三国 发表于 2015-5-27 18:10:43
sstutu 发表于 2015-5-27 17:23
我们通过shell命令能实现的,同样可以通过界面实现。
如同计算发展,原先都是黑屏,现在都是window界面 ...

恩恩,谢谢,我打算用第一种方式,不过对于程序自动打包还没想好。
回复

使用道具 举报

梦回三国 发表于 2015-5-27 18:11:24
NIITYZU 发表于 2015-5-27 17:15
楼主,请问一下,基于Hadoop的Web系统是怎么做的?我一直疑惑,是正常的Web项目开发,然后在后台数据处理的 ...

楼下解释的很正确啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条