您的位置:首页 > 运维架构 > Linux

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

2015-12-13 11:08 609 查看
一、配置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-version、java、javac、echo$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_65(jdk所在目录)
4.修改linux目录/ect/profile文件
在末尾加入
exportHADOOP_INSTALL=/enviroment/hadoop-2.7.1(hadoop目录)
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.将下载好的插件放置到eclipse的plugins目录下面,重启eclipse
3.接着在window--→preference中找到hadoopmap/redurce
点击 brower,选择hadoop的目录
4.在projectexploer中如果可以看到DFSLOCATIONSI就证明里成功不远了
5.windows——>showview -→others,选择map/redurcelocation,出现如图下方所示的方框,点击蓝色的那只
小象以添加hadooplocation

6.配置hadooplocation
locationname:名字任意取
map/reducemaster:host跟port均要跟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;

publicclassTestMapper
extendsMapper<LongWritable,
Text, Text, IntWritable> {

privatestaticfinalintMISSING=
999;
publicvoidmap(LongWritable
key,Text
value,Context
context)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;

publicclassTestRedurce
extendsReducer<Text,
IntWritable, Text, IntWritable> {

publicvoidreduce(Text
key,Iterable<IntWritable>values,Context
context)throwsIOException,
InterruptedException {
//process
values
intmaxValue=
Integer.MIN_VALUE;
for(IntWritable
val:values){
maxValue=
Math.max(maxValue,val.get());

}

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

}

!!!!!!!!!!!!!注意事项开始!!!!!!!!!!!!!!
1.mapper、redurce很多书上由于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)右键点击项目
(2)runAs→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中看到输出的结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息