最近,在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”,出现如下信息:
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的相关信息。
2. hadoop eclipse 插件编译
2.1 导入hadoop的eclipse-plugin的工程
用hadoop提供的文件自行编译,导入hadoop的eclipse-plugin文件夹.打开eclipse,在File菜单中选择Import.
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 。
2.3 修改hadoop-1.0.4/src/contrib目录的build-contrib.xml文件
找到
并在该行下面添加以下两行内容。
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
问题记录:
1. An internal error occurred during: “Connecting to DFS localhost”.
详细信息如下:
java.lang.NoClassDefFoundError: org/codehaus/jackson/map/JsonMappingException
找到刚才添加的lib目录下的几个jar文件,分别解压,然后通过betterzip将这些字节码分别添加到classes下面
问题2:Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException
使用jps发现NameNode进程没有正确运行。解决的办法就是先停止服务,然后重新格式化namenode。
bin/hadoop namenode -format
重新启动后,运行该插件无问题
问题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~~~
原文地址:Map/Reduce开发环境, 感谢原作者分享。

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

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

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

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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