hadoop220单机伪分布式实践Word文档格式.docx
- 文档编号:21137159
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:16
- 大小:324.01KB
hadoop220单机伪分布式实践Word文档格式.docx
《hadoop220单机伪分布式实践Word文档格式.docx》由会员分享,可在线阅读,更多相关《hadoop220单机伪分布式实践Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
上传hadoop-2.2.0.tar.gz到linux服务器并解压到/usr/local/hadoop-2.2.0
2.1配置linux环境变量
/etc/profile文件中添加
exportHADOOP_HOME=/usr/local/hadoop-2.2.0
exportJAVA_HOME=/usr/java/jdk1.6.0_35
PATH=$JAVA_HOME/bin:
$PATH
CLASSPATH=.:
$JAVA_HOME/lib/dt.jar:
$JAVA_HOME/lib/tools.jar
exportPATH
exportCLASSPATH
exportPATH=$PATH:
$HADOOP_HOME/bin:
$HADOOP_HOME/sbin
保存后,执行source/etc/profile命令使其生效
2.2生成ssh密钥,实现免登录执行hadoop
这一步很关键,否则hadoop无法正常启动
执行ssh-keygen–trsa命令
一直按<
Enter>
如果是root用户,默认生成文件在/root/.ssh中,进入/root/.ssh目录中,使用命令cpid_rsa.pubauthorized_keys
生成authorized_keys。
测试:
sshlocalhost
如果不需要输入密码即设置成功,恭喜你,可以进入下一步了。
2.3配置hadoop-2.2.0/etc/core-site.xml文件
内容如下:
<
configuration>
<
property>
name>
fs.defaultFS<
/name>
value>
hdfs:
//hadoop-single:
9000<
/value>
final>
true<
/final>
/property>
hadoop.tmp.dir<
/hadoop/temp<
/configuration>
补充说明:
(1)fs.defaultFS属性配置的是hadoop集群的访问地址,是HDFS-Master主机对外的地址
hadoop-single是主机名或域名,需要在linux服务器的/etc/hosts文件中做如下配置:
192.168.1.20hadoop-single
然后执行/etc/init.d/networkrestart使网络配置重启生效
(2)hadoop.tmp.dir属性是配置的hadoop临时目录,
需要执行mkdir–p/hadoop/temp手工创建,hadoop不会自己创建的
2.4配置hadoop-2.2.0/etc/hdfs-site.xml文件
dfs.namenode.name.dir<
file:
/hadoop/dfs/name<
dfs.datanode.data.dir<
/hadoop/dfs/data<
dfs.replication<
1<
dfs.permissions<
false<
需要需要执行mkdir–p/hadoop/dfs/data和
mkdir–p/hadoop/dfs/name
手工创建目录,hadoop不会自己创建的
2.5配置hadoop-2.2.0/etc/mapred-site.xml文件
如果没有此文件,则复制mapred-site.xml.template并重命名
cpmapred-site.xml.templatemapred-site.xml
mapreduce.framework.name<
yarn<
mapred.job.tracker<
hadoop-single:
9001<
mapred.system.dir<
/hadoop/mapred/system<
mapred.local.dir<
/hadoop/mapred/local<
需要需要执行mkdir–p/hadoop/mapred/system和
mkdir–p/hadoop/mapred/local
2.6配置hadoop-2.2.0/etc/yarn-site.xml文件
!
--SitespecificYARNconfigurationproperties-->
yarn.resourcemanager.webapp.address<
9088<
yarn.nodemanager.aux-services<
mapreduce_shuffle<
yarn.resourcemanager.webapp.address的端口默认是8088,因为该端口被其它进程占用了,本人才修改端口为9088,否则导致hadoop的resourcemanager服务无法启动
2.7配置hadoop-2.2.0/etc/hadoop-env.sh文件
加上JAVA_HOME的配置,如下:
#exportJAVA_HOME=${JAVA_HOME}
2.8配置hadoop-2.2.0/etc/yarn-env.sh文件
#exportJAVA_HOME=/home/y/libexec/jdk1.6.0/
3.设置hadoop脚本的执行权限
chmod755/usr/local/hadoop-2.2.0/bin/*
chmod755/usr/local/hadoop-2.2.0/sbin/*
4.设置hadoop工作目录的操作权限
chmod755/hadoop/temp
chmod755/hadoop/dfs/name
chmod755/hadoop/dfs/data
chmod755/hadoop/mapred/local
chmod755/hadoop/mapred/system
5.格式化hadoop的namenode
执行hadoopnamenode–format命令
如果第一次配置和使用hadoop,必须先格式化
控制台显示14/07/1514:
41:
01INFOcommon.Storage:
Storagedirectory/hadoop/dfs/namehasbeensuccessfullyformatted.则表示格式化成功
6.启动hadoop所有的进程
start-all.sh
启动hadoop所有的进程,然后通过jps命令查看。
正常那个情况下应该有以下几个服务进程:
[root@test01~]#jps
23485DataNode
24272Jps
23376NameNode
23631SecondaryNameNode
23866NodeManager
23771ResourceManager
如果少了进程,说明启动失败,需要查看日志文件
/usr/local/hadoop-2.2.0/logs/hadoop-root-namenode-hostname.log
/usr/local/hadoop-2.2.0/logs/hadoop-root-datanode-hostname.log
/usr/local/hadoop-2.2.0/logs/hadoop-root-secondarynamenode-hostname.log
/usr/local/hadoop-2.2.0/logs/yarn-root-nodemanager-hostname.log
/usr/local/hadoop-2.2.0/logs/yarn-root-resourcemanager-hostname.log
如果log文件中没有报错和异常,则启动成功
否则,需要检查配置文件是否配置正确。
6.查看hadoop所有的进程
命令:
jps
7.关闭hadoop所有的进程
stop-all.sh
8.重新格式化hadoop
先关掉所有的hadoop进程,
删除以下目录中所有的文件和子文件夹:
rm–rf/usr/local/hadoop-2.2.0/logs/
rm–rf/tmp/*
rm–rf/hadoop/temp/*
rm–rf/hadoop/dfs/name/*
rm–rf/hadoop/dfs/data/*
然后重新执行hadoopnamenode–format命令
9.测试第一个hadoop程序wordcount
9.1在eclipse中创建MapReduce工程
工程名为t-hadoop
9.2新建packageorg.apache.hadoop.examples
将hadoop-2.2.0-src\hadoop-mapreduce-project\hadoop-mapreduce-examples\src目录下源码自带的例子拷贝到工程里
packageorg.apache.hadoop.examples;
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{
publicstaticclassTokenizerMapperextendsMapper<
Object,Text,Text,IntWritable>
{
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);
}
publicstaticclassIntSumReducerextendsReducer<
Text,IntWritable,Text,IntWritable>
{
privateIntWritableresult=newIntWritable();
publicvoidreduce(Textkey,Iterable<
IntWritable>
values,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<
in>
out>
"
);
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);
FileInputFormat.addInputPath(job,newPath(otherArgs[0]));
FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));
System.exit(job.waitForCompletion(true)?
0:
1);
}
9.3用eclipse将需要测试的job程序打成jar包
在桌面上将生成test-hadoop.jar
9.4在linux服务器上用hadoop执行test-hadoop.jar
上传test-hadoop.jar到linux服务器的任意目录下,例如/root目录
在/root目录下新建测试用的文本文件test.txt
在里面添加文本内容如下:
helloworld
hellohadoop
hellojava
9.4.1上传本地测试文件到hadoop的HDFS文件系统
在任意目录下执行hadoopfs-mkdir–p/hadoop/input命令,在hadoop的HDFS文件系统里创建输入目录/hadoop/input
并执行hadoopfs-mkdir–p/hadoop/output命令,在hadoop的HDFS文件系统里创建输出目录/hadoop/output
然后通过hadoopfs-ls–R/查看是否有如下目录:
通过hadoopfs–put/root/test.txt/hadoop/input命令将本地的文本文件上传到HDFS文件系统的/hadoop/input目录中
然后通过hadoopfs-ls–R/查看/hadoop/input目录下是否有test.txt
通过hadoopfs–cat/hadoop/input/test.txt命令可以查看HDFS文件系统中test.txt的内容
9.4使用hadoopjar运行程序
hadoopjar/root/test-hadoop.jar/hadoop/input/hadoop/output/out.txt
最后两个参数意思分别是输入目录和输出目录
Hadoop将会自动读取/hadoop/input目录下所有的文件作为输入的数据,并将最终的结果输出到/hadoop/output/out.txt目录中,可以看到/hadoop/output/out.txt并不是一个文件,而是一个文件夹,里面有如下文件:
所要的最终统计结果在/hadoop/output/out.txt/part-r-000000文件中
其内容如下:
9.5使用eclipse插件查看hadoop的HDFS文件目录和文件内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hadoop220 单机 分布式 实践
![提示](https://static.bdocx.com/images/bang_tan.gif)