Hadoop2.7.1环境搭建(基于linux)

来源:互联网 发布:测绘cad制图软件 编辑:程序博客网 时间:2024/04/28 03:00


一、配置java环境

1.下载jdk1.8.0_65,并解压(tar-zxvf文件目录)解压到当前目录

2.修改linux环境变量(ubuntu下面普通用户不允许修改/etc/profile文件):

sudovi /etc/profile进入vim界面

3.i键进入插入模式

4.配置java_home:

JAVA_HOME=/enviroment/jdk1.8.0_65

exportJAVA_HOME

PATH=$PATH:$JAVA_HOME/bin

exportPATH

CLASSPATH=.:$JAVA_HOME/lib

5.按”:”键,接着wq退出

至此,java环境配置完毕

6.测试java环境:

打开终端,输入java-versionjavajavacecho$JAVA_HOME

如果都没有问题的话,证明java环境以及搭建好了


二、搭建hadoop环境

1.下载官网2.7.1release版本的hadoop

2.用解压命令(tar-zxvf文件目录)解压到当前目录

3.修改hadoop目录下的etc/hadoop中的hadoop-env.sh文件,找到java_home,整行修改为

exportJAVA_HOME=/enviroment/jdk1.8.0_65jdk所在目录)

4.修改linux目录/ect/profile文件

在末尾加入

exportHADOOP_INSTALL=/enviroment/hadoop-2.7.1hadoop目录)

exportPATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin

至此,基础环境已经配好

输入hadoopversion验证,如果可以看到hadoop版本,证明环境已经配置好。


、配置hadoop

hadoop有三种运行方式:

1)本地模式:所有程序都在同一个jvm上运行。测试与调试mapreduce方便

2)伪分布模式:守护进程在本地运行,模拟小规模集群

3)全分布式模式:守护进程运行在一个集群上面





、开发环境搭建

1.下载hadoop-eclipse-plugin-2.7.1.jar一定注意要对应版本(linux下跟windows下是不一样的。而且同系统也

需要根据具体使用hadoop的版本来选择相应的插件)

2.将下载好的插件放置到eclipseplugins目录下面,重启eclipse

3.接着在window--→preference中找到hadoopmap/redurce

点击 brower,选择hadoop的目录

4.projectexploer中如果可以看到DFSLOCATIONSI就证明里成功不远了

5.windows——>showview -→others,选择map/redurcelocation,出现如图下方所示的方框,点击蓝色的那只

小象以添加hadooplocation






















6.配置hadooplocation

locationname:名字任意取

map/reducemasterhostport均要跟hadoop/etc/hadoop中的core-site.xml对应

DFSMASTER

同理,也要跟hdfs-site.xml对应。

配置完这几项,就可以写个简单的mapper来测试一下




















7.编写测试用的mapper

packagetestMR;


importjava.io.IOException;


importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.LongWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hadoop.mapreduce.Mapper;


publicclassTestMapperextendsMapper<LongWritable, Text, Text, IntWritable> {


privatestaticfinalintMISSING= 999;

publicvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException, InterruptedException {

Stringline=value.toString();

Stringyear=line.toString();

intair=0;

if(line.charAt(87)=='+'){

air= Integer.parseInt(line.substring(88,92));

}else{

air= Integer.parseInt(line.substring(87,92));

}

Stringquality=line.substring(92,93);

if(air!=MISSING&&quality.matches("[01459]")){

context.write(newText(year),newIntWritable(air));

}

}


}

8.编写测试用的reduce

packagetestMR;

importjava.io.IOException;

importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hadoop.mapreduce.Reducer;

publicclassTestRedurceextendsReducer<Text, IntWritable, Text, IntWritable> {

publicvoidreduce(Textkey,Iterable<IntWritable>values,Contextcontext)throwsIOException, InterruptedException {

//process values

intmaxValue= Integer.MIN_VALUE;

for(IntWritableval:values){

maxValue= Math.max(maxValue,val.get());

}

context.write(key,newIntWritable(maxValue));

}

}



!!!!!!!!!!!!注意事项开始!!!!!!!!!!!!!!

1.mapperredurce很多书上由于hadoop的版本的问题,导致如果按照书上一样编写的话程序会出错。上面两个

是经过修改的可以在2.7.1的环境下运行的

!!!!!!!!!!!!注意事项结束!!!!!!!!!!!!!!


9.编写用于测试是否可以运行的类

packagetestMR;


importjava.io.IOException;


importorg.apache.hadoop.fs.Path;

importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hadoop.mapreduce.Job;

importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;

importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;




publicclassTestJob {

publicstaticvoidmain(String[]args)throwsIllegalArgumentException, IOException, ClassNotFoundException,InterruptedException {



if(args.length!= 2){


System.err.print("Usage:MaxTemperature<input path> <output path>");

System.exit(-1);


}



Jobjob=newJob();


job.setJarByClass(TestJob.class);


/**

*此处参数可以在eclipse中设定,主要是输入目录跟输出目录

*/

FileInputFormat.addInputPath(job,newPath(args[0]));


FileOutputFormat.setOutputPath(job,newPath(args[1]));



job.setMapperClass(TestMapper.class);


job.setReducerClass(TestRedurce.class);



job.setOutputKeyClass(Text.class);


job.setOutputValueClass(IntWritable.class);



System.exit(job.waitForCompletion(true)?0:1);



}

}

10.配置注释中所说的参数

1)右键点击项目

2runAs→run gonfiguration 进入如图所示界面




















3)选择argument,在programargument中添加:

hdfs://localhost:9000/1901(输入的文件/文件夹等)

hdfs://localhost:9000/123/output(输出的目录)

点击apply,完成配置


11.加入log4j.properties

该文件在hadoop目录中的/etc/hadoop中,直接拷贝到项目的src目录中。


12.运行

右键TestJob—>Run As hadoop,在控制台可以看到如下信息

FileSystem Counters

FILE:Number of bytes read=1881718

FILE:Number of bytes written=3363488

FILE:Number of read operations=0

FILE:Number of large read operations=0

FILE:Number of write operations=0

HDFS:Number of bytes read=1776380

HDFS:Number of bytes written=912605

HDFS:Number of read operations=13

HDFS:Number of large read operations=0

HDFS:Number of write operations=4

Map-ReduceFramework

Mapinput records=6565

Mapoutput records=6565

Mapoutput bytes=921004

Mapoutput materialized bytes=940694

Inputsplit bytes=91

Combineinput records=0

Combineoutput records=0

Reduceinput groups=6565

Reduceshuffle bytes=940694

Reduceinput records=6565

Reduceoutput records=6565

SpilledRecords=13130

ShuffledMaps =1

FailedShuffles=0

MergedMap outputs=1

GCtime elapsed (ms)=6

Totalcommitted heap usage (bytes)=528482304

ShuffleErrors

BAD_ID=0

CONNECTION=0

IO_ERROR=0

WRONG_LENGTH=0

WRONG_MAP=0

WRONG_REDUCE=0

FileInput Format Counters

BytesRead=888190

FileOutput Format Counters

BytesWritten=912605



并可以在DFS中看到输出的结果


0 0
原创粉丝点击