hadoop安装配置笔记.docx
《hadoop安装配置笔记.docx》由会员分享,可在线阅读,更多相关《hadoop安装配置笔记.docx(18页珍藏版)》请在冰豆网上搜索。
![hadoop安装配置笔记.docx](https://file1.bdocx.com/fileroot1/2022-12/7/82f7b3d6-e078-4fbd-bd3d-b1356fae2b33/82f7b3d6-e078-4fbd-bd3d-b1356fae2b331.gif)
hadoop安装配置笔记
Hadoop安装配置教程
一、安装JDK1.8.0_40
1.网上下载好压缩包jdk-8u40-linux-x64.gz后,手动安装JDK1.8.0_40
sudomkdir/usr/lib/jvm
sudotarzxvfjdk-8u40-linux-x64.gz-C/usr/lib/jvm
2.配准环境变量
sudogedit/etc/profile
在profile文件最下面输入:
#setJavaEvironment
exportJAVA_HOME=/usr/lib/jvm/jdk1.8.0_40
exportCLASSPATH=".:
$JAVA_HOME/lib:
$CLASSPATH"
exportPATH="$JAVA_HOME/bin:
$PATH"
3.验证JDK是否安装成功
java–version
如果验证成功,会出现如下信息:
否则会出现如下信息:
依次输入如下命令:
sudoupdate-alternatives--install/usr/bin/javajava/usr/lib/jvm/jdk1.8.0_40/bin/java300
sudoupdate-alternatives--install/usr/bin/javacjavac/usr/lib/jvm/jdk1.8.0_40/bin/javac300
sudoupdate-alternatives--configjava
此时再输入命令java–version即可看到所安装的JDK版本信息了。
二、配置SSH免密码登陆
假设电脑的当前目录是/home/hadoop,其中hadoop是用户名,主机名字是master,从机名字是slave1和slave2
1.确认已经连接网络,输入如下命令安装SSH:
sudoapt-getinstallssh
2.三台电脑下输入如下命令:
sudogedit/etc/hosts
在打开的hosts文件中添加如下信息:
172.16.132.37slave1
172.16.132.51slave2
172.16.132.54master
3.三台电脑都输入如下命令,以实现三台电脑免密码登录它们自身:
ssh-keygen-trsa-P''(注意空格,最后那个是两个单引号而不是双引号)
此时出现如下信息:
按回车键,出现如下信息:
此时会在目录/home/hadoop下自动生成一个隐藏文件夹.ssh,.ssh文件夹下生成了两个文件:
id_rsa(私钥)和id_rsa.pub(公钥)
输入如下命令,把公钥追加到authorized_keys中:
cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
输入如下命令:
ls~/.ssh
可看到.ssh文件夹下有三个文件:
输入如下命令,可以免密码登录它们自身:
sshlocalhost
4.master免密码登录slave1的实现:
在master下面输入如下命令,把master上的公钥id_dsa.pub复制到slave1中,在slave1中存储为id_dsa.pub.master:
sudoscp~/.ssh/id_rsa.pubslave1:
/home/hadoop/.ssh/id_rsa.pub.master
在hadoop-slave1下输入如下命令,把id_rsa.pub.master追加到authorized_keys中
cat~/.ssh/id_rsa.pub.master>>~/.ssh/authorized_keys
5.master免密码登录slave2的实现:
跟上一步类似。
三、安装hadoop2.6.0
在master机器中执行以下1-10步:
1.解压hadoop-2.6.0.tar.gz到路径/home/hadoop下,其中hadoop是用户名
tarxzfvhadoop-2.6.0.tar.gz
2.用命令sudogedithadoop-2.6.0/etc/hadoop/hadoop-env.sh打开hadoop-env.sh,用命令echo$JAVA_HOME查看JDK路径,往hadoop-env.sh中添加如下内容:
exportJAVA_HOME=/usr/lib/jvm/jdk1.8.0_40
3.修改hadoop-2.6.0/etc/hadoop/core-site.xml:
sudogedithadoop-2.6.0/etc/hadoop/core-site.xml
注意:
必须加在节点内
hadoop.tmp.dir
/home/hadoop/hadoop-2.6.0/tmp
Abaseforothertemporarydirectories.
fs.default.name
hdfs:
//master:
8020
4.修改hadoop-2.6.0/etc/hadoop/hdfs-site.xml
sudogedithadoop-2.6.0/etc/hadoop/hdfs-site.xml
dfs.name.dir
/home/hadoop/hadoop-2.6.0/dfs/name
PathonthelocalfilesystemwheretheNameNodestoresthenamespaceandtransactionslogspersistently.
dfs.permissions
false
dfs.data.dir
/home/hadoop/hadoop-2.6.0/dfs/data
CommaseparatedlistofpathsonthelocalfilesystemofaDataNodewhereitshouldstoreitsblocks.
dfs.replication
2
5.修改hadoop-2.6.0/etc/hadoop/mapred-site.xml
sudogedithadoop-2.6.0/etc/hadoop/mapred-site.xml
xmlversion="1.0"encoding="UTF-8"?
>
xml-stylesheettype="text/xsl"href="configuration.xsl"?
>
--Putsite-specificpropertyoverridesinthisfile.-->
mapred.job.tracker
master:
8021
HostorIPandportofJobTracker.
6.修改hadoop-2.6.0/etc/hadoop/masters
sudogedithadoop-2.6.0/etc/hadoop/masters
列出namenode机器的名字:
master
7.修改hadoop-2.6.0/etc/hadoop/slaves
sudogedithadoop-2.6.0/etc/hadoop/slaves
列出所有datanode的机器名字:
slave1
slave2
8.把文件夹hadoop-2.6.0拷贝到slave1和slave2机器中:
scp–r~/hadoop-2.6.0slave1:
~/
scp–r~/hadoop-2.6.0slave2:
~/
9.Hadoop的启动
进入hadoop安装目录:
cd/home/hadoop/hadoop-2.6.0
格式化HDFS文件系统的namenode:
bin/hdfsnamenode–format
启动hadoop集群:
sbin/start-dfs.sh
成功的话输入jps会出现如下界面:
关闭集群:
sbin/stop-dfs.sh
10.运行wordcount程序
启动集群:
sbin/start-dfs.sh
在hadoop2.6.0目录下创建input目录:
mkdirinput
打开文件夹input,新建两个文档f1和f2:
f1中输入如下:
f2中输入如下:
在hdfs创建Example目录,命令如下:
bin/hadoopfs-mkdir/Example
将f1、f2文件copy到Exmaple目录,命令如下:
bin/hadoopfs -putinput//Example
执行wordcount程序:
bin/hadoopjarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jarwordcount/Example/input//output
查看执行结果:
bin/hadoopfs-cat/output/*
四、安装和配置eclipse。
1.下载好eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz后解压到文件夹/home/hadoop下
tarzxvfeclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz
2.把插件hadoop-eclipse-plugin-2.6.0.jar放到目录/home/hadoop/eclipse/plugins下
3.打开软件eclipse,点击window/openPerspective/other/Map/Reduce
点击下图右下角的大象:
下图的Locationname随便取个名字,左侧的Host输入主机master的IP,Port输入文件mapred-site.xml中的端口号,右侧的Port输入文件core-site.xml中的端口号:
之后会出现如下界面:
点击window/Preferences/HadoopMap/Reduce,在Hadoopinstallationdirectory:
中选择hadoop的安装路径。
五、用Eclipse编译、运行hadoop程序。
1.新建工程
点击File—New—Project—Map/ReduceProject,工程名字写wordcount。
2.新建WordCount类。
右击工程wordcount,New—Class,类名写wordcount:
3.把hadoop安装目录下的WordCount源码复制到wordcount.java文件中,程序代码如下:
packagewordcount;
importjava.io.IOException;
importjava.util.StringTokenizer;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.Path;
importorg.apache.hadoop.io.IntWritable;
importorg.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Job;
importorg.apache.hadoop.mapreduce.Mapper;
importorg.apache.hadoop.mapreduce.Reducer;
importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;
importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
importorg.apache.hadoop.util.GenericOptionsParser;
publicclasswordcount{
publicstaticclassTokenizerMapper
extendsMapper
privatefinalstaticIntWritableone=newIntWritable
(1);
privateTextword=newText();
publicvoidmap(Objectkey,Textvalue,Contextcontext
)throwsIOException,InterruptedException{
StringTokenizeritr=newStringTokenizer(value.toString());
while(itr.hasMoreTokens()){
word.set(itr.nextToken());
context.write(word,one);
}
}
}
publicstaticclassIntSumReducer
extendsReducer{
privateIntWritableresult=newIntWritable();
publicvoidreduce(Textkey,Iterablevalues,
Contextcontext
)throwsIOException,InterruptedException{
intsum=0;
for(IntWritableval:
values){
sum+=val.get();
}
result.set(sum);
context.write(key,result);
}
}
publicstaticvoidmain(String[]args)throwsException{
Configurationconf=newConfiguration();
String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();
if(otherArgs.length<2){
System.err.println("Usage:
wordcount[...]");
System.exit
(2);
}
Jobjob=newJob(conf,"wordcount");
job.setJarByClass(wordcount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
for(inti=0;iFileInputFormat.addInputPath(job,newPath(otherArgs[i]));
}
FileOutputFormat.setOutputPath(job,
newPath(otherArgs[otherArgs.length-1]));
System.exit(job.waitForCompletion(true)?
0:
1);
}
}
4.在hadoop安装目录(/home/hadoop/hadoop-2.6.0)下新建文件夹input,input中新建两个文件f1和f2,f1和f2中输入如下内容:
5.把input文件夹上传到分布式文件系统中:
在终端执行如下命令:
cd/home/hadoop/hadoop-2.6.0(进入hadoop安装目录)
bin/hadoopfs-mkdir/Example(在分布式文件系统中创建文件夹Example)
bin/hadoopfs-putinput/Example(把input文件夹上传到分布式文件系统的/Example/目录下)
bin/hadoopfs-ls/Example/input(查看分布式文件系统/Example/input下的文件)
由上图可看到,在dfs的/Example/input目录下,有四个文件夹,其中f1、f2是我们刚刚建立的input文件夹下的两个文件,而f1~和f2~不知道是什么来的,内容是上一次写在f1和f2上的内容,可以用如下命令查看这四个文件中的内容:
bin/hadoopfs-cat/Example/input/f1
bin/hadoopfs-cat/Example/input/f2
bin/hadoopfs-cat/Example/input/f1~
bin/hadoopfs-cat/Example/input/f2~
删除f1~和f2~这两个文件:
bin/hadoopfs-rm-r-f/Example/input/f1~
bin/hadoopfs-rm-r-f/Example/input/f2~
6.回到Eclipse界面,设置输入输出参数。
点击RunConfigurations:
设置Programarguments如下图所示,其中第一行表示输入参数,第二行表示输出参数:
点击上图的Run,运行程序。
7.查看输出结果。
在终端输入如下命令,即可查看输出结果:
bin/hadoopfs-cat/Example/output/*