Windows环境中MR任务的三种运行方式

本地运行

  1. 解压hadoop安装tar包hadoop-2.5.0-cdh5.3.6.tar.gz,下载地址:http://archive.cloudera.com/cdh5/cdh/5/
  2. 设置环境变量HADOOP_HOME,需要确保当前用户可以访问(在eclipse中可以访问到)
    Windows环境中MR任务的三种运行方式_第1张图片
  3. 解压hadoop-common-2.2.0-bin-32.rar压缩包,将压缩包中的文件全部复制到${HADOOP_HOME}/bin文件夹中
  4. 开发MR任务完成后,直接运行,和普通java任务一样
  5. 本地运行MR任务可能出现异常,提示访问native方法的时候出现异常,这种异常引起的原因主要是由于linux开发环境和window环境的不一致导致的,一般直接修改源码,将源码文件copy到项目中即可,类似异常如下:
    这里写图片描述
  6. 上述异常的解决方案是修改NativeIO类的源文件,将方法access的返回值修改为直接返回true,然后将修改后的源文件copy到项目中即可。其他异常类似解决。

    备注:如果在MR任务中访问到远程的HDFS集群,那么需要设置fs.defaultFS参数,如果访问到其他集群,那么就需要设置对应参数。
    

本地提交集群运行

  1. 配置环境变量部分和本地运行类似(本地运行的1、2、3步)
  2. Copy Hadoop环境的core-site.xml
    mared-site.xml
    yarn-site.xml三个配置文件到项目中,进行配置项修改,最后保留如下配置项:(如果配置项在文件中不存在,那么新增配置项,配置项的值是集群的配置值)
    a) fs.defaultFS b) mapreduce.framework.name
    c) yarn.resourcemanager.address
    d) yarn.application.classpath(如果没有配置项,可以不给定)
    e) yarn.resourcemanager.scheduler.address(伪分布情况下不需要给定)
  3. 在mapred-site.xml文件中添加一个配置项mapreduce.app-submission.cross-platform,配置项的值为true。Linux开发环境不需要给定该值。
  4. 本地开发MR任务
  5. 将项目进行编译打包,然后将打包后的jar文件添加到conf环境中去。 // 远程提交, 这里的路径就是打包好后jar文件所在的文件路径
    ((org.apache.hadoop.mapred.JobConf)
    job.getConfiguration()).setJar(“target/transformer-0.0.1.jar”);
  6. 直接运行MR任务,和普通java程序一样

集群运行

  1. 开发MR任务
  2. MR任务打包(可以使用maven命令,也可以直接导出jar包的形式打包)
  3. 直接使用hadoop jar
    xxx.jar com.ibeifeng.xxx.WordCount input_data_dir
    output_result_dir命令进行运行

异常:
权限异常:通常是由于没有权限的用户进行访问HDFS造成的,异常描述如下:
Windows环境中MR任务的三种运行方式_第2张图片
解决方案:
1、 修改hadoop集群不进行用户权限控制,默认为进行控制。修改文件hdfs-site.xml文件中的dfs.permissions.enabled的配置项值为false,然后重启hadoop集群即可。
2、 客户端使用UserGroupInformation类创建远程代理用户,比如上述异常的解决方法就是创建一个远程代理用户ibeifeng,然后使用该远程代理用户调用正常的代码即可。案例如下:
Windows环境中MR任务的三种运行方式_第3张图片

下载:hadoop-common-2.2.0-bin-32.rar
http://download.csdn.net/download/haoyuexihuai/9944226

你可能感兴趣的:(笔记,大数据学习)