搜索
首页数据库mysql教程Map/Reduce开发环境
Map/Reduce开发环境Jun 07, 2016 pm 04:31 PM
macmapreduce开发搭建环境

最近,在Mac上折腾了下,想搭建一个hadoop的测试环境,用于写一些Map/Reduce的sample,下面就先将搭建环境的过程记录下来。 1. hadoop 单机搭建 1.1 确认java环境已经安装 在terminal里再次键入java -version,出现如下信息: 1.2 安装SSH 首先,输入 ssh-ke

       最近,在Mac上折腾了下,想搭建一个hadoop的测试环境,用于写一些Map/Reduce的sample,下面就先将搭建环境的过程记录下来。

1. hadoop 单机搭建

1.1 确认java环境已经安装

     在terminal里再次键入”java -version”,出现如下信息:

Map/Reduce开发环境

1.2  安装SSH

      首先,输入 ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa 

      ssh-keygen表示生成秘钥;-t表示秘钥类型;-P用于提供密语;-f指定生成的秘钥文件。这个命令在”~/.ssh/“文件夹下创建两个文件id_dsa和id_dsa.pub,是ssh的一对儿私钥和公钥。接下来,将公钥追加到授权的key中去,输入:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

      ssh免登陆设置完成。然后输入 ssh localhost  查看下即可

1.3  下载hadoop压缩包

1.4   hadoop-env.sh脚本文件,设置如下环境变量:

       export JAVA_HOME=/usr/alibaba/java
       export HADOOP_INSTALL=/Users/metaboy/project/hadoop/hadoop-1.0.4/
 
       export PATH=$PATH:$HADOOP_INSTALL/bin
    export HADOOP_OPTS=”-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk”

1.5  core-site.xml文件,配置hdfs的地址和端口号:

        
        fs.default.name   
        hdfs://localhost:9000   
   

     
       hadoop.tmp.dir 
       /Users/metaboy/project/hadoop/hadoop-1.0.4/tmp 
       A base for other temporary directories.  
   

1.6  mapred-site.xml文件,设置map-reduce中jobtracker的地址和端口号:

      
    mapred.job.tracker   
    localhost:9001   
 
 
    
        mapred.local.dir 
        /Users/metaboy/project/hadoop/hadoop-1.0.4/tmp/mapred/local 
   
 
     
        mapred.system.dir 
        /Users/metaboy/project/hadoop/hadoop-1.0.4/tmp/mapred/system 
   

1.7 最后是hdfs-site.xml文件,设置hdfs的默认备份方式:

       默认值是3,在伪分布式系统中,需要修改为1。

      
    dfs.replication   
    1   
 

   
    dfs.permissions 
    false 

 
      dfs.data.dir 
      /Users/metaboy/project/hadoop/hadoop-1.0.4/tmp/hdfs/data 
   
 
    
      dfs.name.dir 
      /Users/metaboy/project/hadoop/hadoop-1.0.4/tmp/hdfs/name 
   
  

 1.8 格式化namenode

       在terminal里输入如下命令:

       bin/Hadoop NameNode -format

1.9 启动

     在terminal里输入如下命令:

      bin/start-all.sh

1.10 测试是否正常

      如果一切正常的话,会在http://localhost:50030和http://localhost:50070分别看到map-reduce和hdfs的相关信息。

Map/Reduce开发环境

2. hadoop eclipse 插件编译

2.1 导入hadoop的eclipse-plugin的工程

      用hadoop提供的文件自行编译,导入hadoop的eclipse-plugin文件夹.打开eclipse,在File菜单中选择Import.

Map/Reduce开发环境

2.2 导入后,在项目中新建lib目录,并复制jar文件

     在项目中新建lib目录,并将hadoop安装根目录的hadoop-core-1.0.4.jar文件,lib目录中的commons-cli-1.2.jar、commons-configuration-1.6.jar、commons-httpclient-3.0.1.jar、commons-lang-2.4.jar、jackson-core-asl-1.8.8.jar、jackson-mapper-asl-1.8.8.jar文件复制到新建的目录中。复制完成后,将新建目录中的hadoop-core-1.0.4.jar文件名改为hadoop-core.jar 。

Map/Reduce开发环境

2.3 修改hadoop-1.0.4/src/contrib目录的build-contrib.xml文件

      找到,将location中的路径修改为hadoop-1.0.4的解压路径。

并在该行下面添加以下两行内容。

   
   
   

eclipse.home是指eclipse的安装目录,需要替换为你自己的安装路径。

version的值要替换为hadoop的版本号。

2.4 修改MapReduceTools项目下的build.xml文件

打开build.xml文件,在文件中搜索name=”jar” ,找到的代码段并加上


   
    –>
 
 
 
 
 
 
 
    –>
          jarfile=”${build.dir}/hadoop-${name}-${version}.jar”
      manifest=”${root}/META-INF/MANIFEST.MF”]]>
     
     
   
 

2.5 在build.xml文件中查找 ,在该行下面添加如下内容:

 
     
           
     

 

2.6 在文件中搜索,并在该行下添加如下内容:

   

2.7 修改 Bundle-ClassPath

使用编辑器打开META-INF文件夹中的MANIFEST.MF文件,在文件中搜索Bundle-ClassPath,可以看到该行内容如下:

Bundle-ClassPath: classes/,
 lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-httpclient-3.0.1.jar,lib/jackson-core-asl-1.8.8.jar,lib/jackson-mapper-asl-1.8.8.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar

2.8 用ant开始编译

      保存build.xml文件后,在build.xml文件上点击右键,并选择Run As -> Ant Build

2.9  安装插件

      编译后的plugin文件会保存在hadoop-1.0.4/build/contrib/eclipse-plugin文件夹中,文件名为hadoop-eclipse-plugin-1.0.4.jar 。

将该文件复制到eclipse安装目录的plugins文件夹下,并重启eclipse。 

2.10 测试

       在eclipse的window菜单中选择Show View -> Other,在Show View窗口中选择MapReduce Tools下的Map/Reduce Locations,点击OK

Map/Reduce开发环境

问题记录:

1. An internal error occurred during: “Connecting to DFS localhost”.

详细信息如下:

java.lang.NoClassDefFoundError: org/codehaus/jackson/map/JsonMappingException

找到刚才添加的lib目录下的几个jar文件,分别解压,然后通过betterzip将这些字节码分别添加到classes下面

Map/Reduce开发环境

问题2:Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException

      使用jps发现NameNode进程没有正确运行。解决的办法就是先停止服务,然后重新格式化namenode。

bin/hadoop namenode -format

重新启动后,运行该插件无问题

Map/Reduce开发环境

问题3:Unable to load realm info from SCDynamicStore 

    这个问题是hadoop官方的一个bug,详细bug介绍可以参考这个链接:https://issues.apache.org/jira/browse/HADOOP-7489

一般在是当start-all.sh 的时候,会抛出这样的异常:

   Unable to load realm info from SCDynamicStore

网络上有一种解决方法,解决单机部署还行,对于伪分布式部署还是不行: 

就是在hadoop-env.sh文件中加上这一行: 

export HADOOP_OPTS=”-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk” 

(意思是设置启动hadoop时设定相关的JVM参数)

~~~EOF~~~

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
springboot怎么读取yml文件中的list列表、数组、map集合和对象springboot怎么读取yml文件中的list列表、数组、map集合和对象May 11, 2023 am 10:46 AM

application.yml定义list集合第一种方式使用@ConfigurationProperties注解获取list集合的所有值type:code:status:-200-300-400-500编写配置文件对应的实体类,这里需要注意的是,定义list集合,先定义一个配置类Bean,然后使用注解@ConfigurationProperties注解来获取list集合值,这里给大家讲解下相关注解的作用@Component将实体类交给Spring管理@ConfigurationPropertie

Java怎么设置过期时间的mapJava怎么设置过期时间的mapMay 04, 2023 am 10:13 AM

一、技术背景在实际的项目开发中,我们经常会使用到缓存中间件(如redis、MemCache等)来帮助我们提高系统的可用性和健壮性。但是很多时候如果项目比较简单,就没有必要为了使用缓存而专门引入Redis等等中间件来加重系统的复杂性。那么Java本身有没有好用的轻量级的缓存组件呢。答案当然是有喽,而且方法不止一种。常见的解决方法有:ExpiringMap、LoadingCache及基于HashMap的封装三种。二、技术效果实现缓存的常见功能,如过时删除策略热点数据预热三、ExpiringMap3.

Java中Map实现线程安全的方式有哪些Java中Map实现线程安全的方式有哪些Apr 19, 2023 pm 07:52 PM

方式1.使用HashtableMaphashtable=newHashtable();这是所有人最先想到的,那为什么它是线程安全的?那就看看它的源码,我们可以看出我们常用的put,get,containsKey等方法都是同步的,所以它是线程安全的publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key.hashCode();intindex=(hash&0x7FFFFFFF)%tab.leng

Java中将对象与Map相互转换的实现方式 - 使用BeanMapJava中将对象与Map相互转换的实现方式 - 使用BeanMapMay 08, 2023 pm 03:49 PM

javabean与map的转换有很多种方式,比如:1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个bean,就需要12秒!!!不推荐使用2、通过Java反射,获取bean类的属性和值,再转换到map对应的键值对中,这种方法次之,但稍微有点麻烦3、通过net.sf.cglib.beans.BeanMap类中的方法,这种方式效率极高,它跟第二种方式的区别就是因为使用了缓存,初次创建bean时需要初始化,

Nginx服务器中map模块怎么配置与使用Nginx服务器中map模块怎么配置与使用May 21, 2023 pm 05:14 PM

map指令使用ngx_http_map_module模块提供的。默认情况下,nginx有加载这个模块,除非人为的--without-http_map_module。ngx_http_map_module模块可以创建变量,这些变量的值与另外的变量值相关联。允许分类或者同时映射多个值到多个不同值并储存到一个变量中,map指令用来创建变量,但是仅在变量被接受的时候执行视图映射操作,对于处理没有引用变量的请求时,这个模块并没有性能上的缺失。一.ngx_http_map_module模块指令说明map语法

go语言怎么获取map元素go语言怎么获取map元素Jan 16, 2023 am 10:38 AM

两种方法:1、利用“for range”语句遍历map来获取全部元素,语法“for key, value := range mapName{...}”。2、使用key做为索引的形式来获取指定元素,语法“value, isOk := mapName[key]”;返回两个返回值,第一个返回值是获取的值,如果key不存在,返回空值,第二个参数是一个bool值,表示获取值是否获取成功。

使用php开发Websocket,实现实时地图定位功能使用php开发Websocket,实现实时地图定位功能Dec 17, 2023 pm 08:09 PM

标题:使用PHP开发Websocket实现实时地图定位功能简介:Websocket是一种实现持久连接,实时双向通信的协议,能够实现实时的数据传输和更新。本文将使用PHP开发Websocket,结合地图定位功能,实现实时地图定位功能。下面将详细介绍具体的代码实现过程。一、准备工作安装PHP环境(版本要求:PHP5.3.0+)安装Composer(PHP第三方

Java 8中的Stream API:如何使用collect()方法将集合收集为Map对象Java 8中的Stream API:如何使用collect()方法将集合收集为Map对象Jul 31, 2023 pm 03:24 PM

Java8中引入了新的StreamAPI,它提供了一种更加高效、简洁的方式来处理集合数据。StreamAPI提供了各种方法来对数据进行处理和转换,其中collect()方法是一个非常重要且常用的方法之一。本文将介绍如何使用collect()方法将集合收集为Map对象,并提供相应的代码示例。在Java8之前,如果我们想将一个集合转

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中