用户登录
用户注册

分享至

Hadoop的集群

  • 作者: 江南丶暮雪
  • 来源: 51数据库
  • 2020-10-06
hadoop集群指的是一群机器在一起提供一个hadoop的集群的服务。
hadoop分布式指的是hadoop支持任务分布式运行,因为有hadoop集群提供服务,所以hadoop将任务分发到集群的多台机器运行,所以叫做分布式。
一个是服务器架构,一个是任务运行架构。



  若在windows的eclipse工程中直接启动mapreduc程序,需要先把hadoop集群的配置目录下的xml都拷贝到src目录下,让程序自动读取集群的地址后去进行分布式运行(您也可以自己写java代码去设置job的configuration属性)。  若不拷贝,工程中bin目录没有完整的xml配置文件,则windows执行的mapreduce程序全部通过本机的jvm执行,作业名也是带有“local"字眼的作业,如 job_local2062122004_0001。 这不是真正的分布式运行mapreduce程序。
  估计得研究org.apache.hadoop.conf.configuration的源码,反正xml配置文件会影响执行mapreduce使用的文件系统是本机的windows文件系统还是远程的hdfs系统; 还有影响执行mapreduce的mapper和reducer的是本机的jvm还是集群里面机器的jvm
  二、 本文的结论

  第一点就是: windows上执行mapreduce,必须打jar包到所有slave节点才能正确分布式运行mapreduce程序。(我有个需求是要windows上触发一个mapreduce分布式运行)
  第二点就是: linux上,只需拷贝jar文件到集群master上,执行命令hadoop jarpackage.jar mainclassname即可分布式运行mapreduce程序。
  第三点就是: 推荐使用附一,实现了自动打jar包并上传,分布式执行的mapreduce程序。
  附一、 推荐使用此方法:实现了自动打jar包并上传,分布式执行的mapreduce程序:
  请先参考博文五篇:
  hadoop作业提交分析(一)~~(五)
  引用博文的附件中ejob.java到你的工程中,然后main中添加如下方法和代码。

  public static file createpack() throws ioexception {
  file jarfile = ejob.createtempjar("bin");
  classloader classloader = ejob.getclassloader();
  thread.currentthread().setcontextclassloader(classloader);
  return jarfile;
软件
前端设计
程序设计
Java相关