转载 http://xuyuanshuaaa.iteye.com/blog/1063303
1. SSH无密码验证配置
Hadoop 需要使用SSH 协议,namenode 将使用SSH 协议启动 namenode和datanode 进程,伪分布式模式数据节点和名称节点均是本身,必须配置 SSH localhost无密码验证。
执行 ssh-keygen -t rsa
通过以上命令将在/root/.ssh/ 目录下生成id_rsa私钥和id_rsa.pub公钥。进入/root/.ssh目录在namenode节点下做如下配置:
cat id_rsa.pub >> authorized_keys
配置完成
原理:
Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,(datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解)。许多教程上介绍Hadoop集群配置时只说明了namenode上SSH无密码登录所有datanode,我在配置时发现必须使datanode上也能SSH无密码登录到namenode,Hadoop集群才能正常启动(也许这不是必须的)
以namenode到datanode为例子:Namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上。当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,datanode确认解密数无误之后就允许namenode进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端namenode公钥复制到datanode上
2. Hadoop配置
下载hadoop并解压
tar xvf hadoop-1.2.1.tar.gz
2.1 进入/usr/local/hadoop/hadoop-0.20.2/conf, 配置Hadoop配置文件
2.1.1 配置hadoop-env.sh文件
添加 # set java environment
export JAVA_HOME=/usr/program/jdk1.6.0_20
编辑后保存退出。
2.1.2 配置core-site.xml
- [root@master conf]# vi core-site.xml
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <!-- Put site-specific property overrides in this file. -->
- <configuration>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://202.173.253.36:9000/</value>
- 默认的namenode的端口为8020
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/usr/local/hadoop/hadooptmp</value>
- </property>
- </configuration>
2.1.3 配置hdfs-site.xml
- [root@master conf]# vi hdfs-site.xml
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <!-- Put site-specific property overrides in this file. -->
- <configuration>
- <property>
- <name>dfs.name.dir</name>
- <value>/usr/local/hadoop/hdfs/name</value>
- </property>
- <property>
- <name>dfs.data.dir</name>
- <value>/usr/local/hadoop/hdfs/data</value>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- </configuration>
2.1.4 配置mapred-site.xml
- [root@master conf]# vi mapred-site.xml
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <!-- Put site-specific property overrides in this file. -->
- <configuration>
- <property>
- <name>mapred.job.tracker</name>
- <value>202.173.253.36:9001</value>
- </property>
- <property>
- <name>mapred.local.dir</name>
- <value>/usr/local/hadoop/mapred/local</value>
- </property>
- <property>
- <name>mapred.system.dir</name>
- <value>/tmp/hadoop/mapred/system</value>
- </property>
- </configuration>
1、其实core-site.xml 对应有一个core-default.xml, hdfs-site.xml对应有一个hdfs-default.xml,
mapred-site.xml对应有一个mapred-default.xml。这三个defalult文件里面都有一些默认配置,现在我们修改这三个site文件,目的就覆盖default里面的一些配置,
2、hadoop分布式文件系统的两个重要的目录结构,一个是namenode上名字空间的存放地方,一个是datanode数据块的存放地方,还有一些其他的文件存放地方,这些存放地方都是基于hadoop.tmp.dir目录的,比如namenode的名字空间存放地方就是 ${hadoop.tmp.dir}/dfs/name, datanode数据块的存放地方就是 ${hadoop.tmp.dir}/dfs/data,所以设置好hadoop.tmp.dir目录后,其他的重要目录都是在这个目录下面,这是一个根目录。我设置的是 /usr/local/hadoop/hadooptmp,当然这个目录必须是存在的。
3、fs.default.name,这个是设置namenode位于哪个机器上,端口号是什么hdfs://192.168.133.128:9000,格式一定要这样写,网上很多资料说ip地址写localhost也行,笔者建议最好写ip,因为后期讲到windows下 eclipse连接hadoop 的时候,如果写localhost,就会连接不到。
4、mapred.job.tracker,这个是设置jobtracker位于哪个机器上,端口号是什么,192.168.133.128:9001,格式和上一个不一样,这个也必须这样写,同样localhost和ip的分别和上述一样
5、dfs.replication,这个是设置数据块的复制次数,默认是3,因为笔者这里就一台机器,所以只能存在一份,就改成了1
2.1.5 配置masters文件和slaves文件
[root@master conf]# vi masters
202.173.253.36
[root@master conf]# vi slaves
202.173.253.36
注:因为在伪分布模式下,作为master的namenode与作为slave的datanode是同一台服务器,所以配置文件中的ip是一样的。
2.2 Hadoop启动
2.2.1 进入 /usr/local/hadoop/hadoop-0.20.2/bin目录下,格式化namenode
[root@master bin]# hadoop namenode -format
10/07/19 10:46:41 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = master/202.173.253.36
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
Re-format filesystem in /usr/local/hadoop/hdfs/name ? (Y or N) Y
10/07/19 10:46:43 INFO namenode.FSNamesystem: fsOwner=root,root,bin,daemon,sys,adm,disk,wheel
10/07/19 10:46:43 INFO namenode.FSNamesystem: supergroup=supergroup
10/07/19 10:46:43 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/07/19 10:46:43 INFO common.Storage: Image file of size 94 saved in 0 seconds.
10/07/19 10:46:43 INFO common.Storage: Storage directory /usr/local/hadoop/hdfs/name has been successfully formatted.
10/07/19 10:46:43 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/202.173.253.36
************************************************************/
2.2.2 启动hadoop所有进程
在/usr/local/hadoop/hadoop-0.20.2/bin 目录下,执行start-all.sh命令
启动完成后,可用jps命令查看hadoop进程是否启动完全。正常情况下应该有如下进程:
10910 NameNode
11431 Jps
11176 SecondaryNameNode
11053 DataNode
11254 JobTracker
11378 TaskTracker
启动之后,在/usr/local/hadoop/hadooptmp 下的dfs文件夹里会生成 data目录,这里面存放的是datanode上的数据块数据,因为笔者用的是单机,所以name 和 data 都在一个机器上,如果是集群的话,namenode所在的机器上只会有name文件夹,而datanode上只会有data文件夹。
搭建过程中,在此环节出现的问题最多,经常出现启动进程不完整的情况,要不是datanode无法正常启动,就是namenode或是TaskTracker启动异常。解决的方式如下:
1.在Linux下关闭防火墙:
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
开始我使用的是service方式,但是总不好用,最后使用了chkconfig重启方式,生效!
2.再次对namenode进行格式化:在/usr/local/hadoop/hadoop-0.20.2/bin 目录下执行hadoop namenode -format命令
3.对服务器进行重启
4.查看datanode或是namenode对应的日志文件,日志文件保存在/usr/local/hadoop/hadoop-0.20.2/logs目录下。仔细查看日志报错的原因,(上次日志报错的信息忘记了)解决方法是进入/usr/local/hadoop/hdfs/name 和usr/local/hadoop/hdfs/data目录下,将目录下的文件全部删除。
5.再次在/bin目录下用start-all.sh命令启动所有进程,通过以上的几个方法应该能解决进程启动不完全的问题了。
2.2.3 查看集群状态
在 bin目录下执行:hadoop dfsadmin -report
[root@master bin]# hadoop dfsadmin -report
Configured Capacity: 304427253760 (283.52 GB)
Present Capacity: 282767941632 (263.35 GB)
DFS Remaining: 282767904768 (263.35 GB)
DFS Used: 36864 (36 KB)
DFS Used%: 0%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
-------------------------------------------------
Datanodes available: 1 (1 total, 0 dead)
Name: 202.173.253.36:50010
Decommission Status : Normal
Configured Capacity: 304427253760 (283.52 GB)
DFS Used: 36864 (36 KB)
Non DFS Used: 21659312128 (20.17 GB)
DFS Remaining: 282767904768(263.35 GB)
DFS Used%: 0%
DFS Remaining%: 92.89%
Last contact: Mon Jul 19 11:07:22 CST 2010
2.3 在WEB页面下查看Hadoop工作情况
启动后可以通过以下两个页面查看节点状况和job状况
http://localhost:50070;
http://localhost:50030。
可以查看任务的执行情况
3. Hadop使用
一个测试例子wordcount
计算输入文本中词语数量的程序。WordCount在Hadoop主目录下的java程序包hadoop-0.20.2-examples.jar 中,执行步骤如下:
在/usr/local/hadoop/hadoop-0.20.2/bin/目录下进行如下操作:
执行 hadoop fs -ls命令,查看当前hdfs分布式文件系统的 文件目录结构,刚执行会说no such dictionary,
你要先建一个文件夹,用命令 haoop fs -mkdir testdir ,然后再执行hadoop fs -ls,就会展示/user/root/testdir
当前用户是root,所以hdfs的根目录就是 /user/root
hadoop fs -mkdir okdir(新建目录名称,可任意命名)
离开hodoop的安全模式
bin/hadoop dfsadmin -safemode leave
在这个目录里放入文件:hadoop fs -put /usr/test_in/*.txt okdir(把本地/usr/test_in目录里的所有txt文件copy到 hdfs分布式文件系统的 /user/root/inputdir 目录里面,因为当前目录就是root 所以 直接写input 就代表/user/root/inputdir)
在/usr/local/hadoop/hadoop-0.20.2下执行:
[root@master hadoop-0.20.2]# hadoop jar hadoop-0.20.2-examples.jar wordcount okdir output (提交作业,此处需注意okdir与output是一组任务,下次再执行wordcount程序,还要新建目录,不能跟okdir与output重名)
可以查看运行结果
# bin/hadoop dfs -cat hellooutput/part-r-00000
相关推荐
《Hadoop伪分布式环境搭建详解》 Hadoop作为大数据处理的核心框架,其分布式环境的搭建是初学者必须掌握的关键技能之一。本篇文章将详细解析Hadoop伪分布式集群环境的搭建步骤,以及在搭建过程中可能遇到的问题及其...
大数据hadoop平台伪分布式搭建详细步骤,基于ubtuntu系统,供初学者学习使用。... 大数据hadoop平台伪分布式搭建详细步骤,基于ubtuntu系统,供初学者学习使用。...
我们将基于提供的hadoop-2.2.0版本进行操作,并参考名为“hadoop2.2.0伪分布式搭建.txt”的指南文件。 首先,我们需要安装Java开发工具包(JDK),因为Hadoop是用Java编写的,依赖于JDK运行。确保你的系统已经安装...
以上就是Hadoop伪分布式搭建的基本流程,过程中涉及的配置文件和参数设置都是关键知识点。在实际应用中,还需要根据硬件资源和具体需求进行调整。如果你遇到问题,可以参考提供的配置文件,或者查阅相关文档和社区...
总之,Hadoop伪分布式搭建是理解和学习Hadoop生态系统的基础步骤,通过这个过程,你可以更好地掌握Hadoop的工作原理,为进一步深入大数据处理和分析打下坚实基础。请参考提供的文档“hadoop伪分布式搭建.docx”获取...
【超详细解说Hadoop伪分布式搭建1】 在深入讲解Hadoop伪分布式搭建的过程中,首先要明白,伪分布式模式是在单个节点上模拟分布式环境,适用于学习和测试Hadoop的配置及功能,无需多台机器。以下是详细的搭建步骤: ...
这里有hadoop的简介,比如MR,Yarn,HDfs,还有一些详细的介绍。以及伪分布式的搭建,同样是图文的方式去写的,配置基本上是一层接一层的去做的,所以有阶段性,可以一阶段一阶段的去配。
hadoop伪分布模式搭建(详细步骤)_hadoop伪分布式搭建全过程-CSDN博客.mhtml
7. 最后,通过`help文档.txt`中的指示进行验证,确保Hadoop伪分布式环境已成功搭建并运行。 理解并掌握这些步骤和配置文件的用途,是成为Hadoop管理员或数据工程师的关键技能之一。在实际应用中,你可能需要根据...
在开始配置Hadoop伪分布式之前,需要确保已经完成了基本的环境搭建工作。主要包括: 1. **系统环境准备**:一般情况下,推荐使用Linux操作系统,因为它提供了良好的稳定性和性能。 2. **JDK安装**:Hadoop基于Java...
【Hadoop 伪分布式配置教程】 本教程详细指导如何在Ubuntu 14.04 64位系统上配置Hadoop的伪分布式环境。虽然教程是基于Ubuntu 14.04,但同样适用于Ubuntu 12.04、16.04以及32位系统,同时也适用于CentOS/RedHat系统...
伪分布式运行模式 这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode),请注意分布式运行中的这几个结点的区别:从分布式...
【Hadoop 伪分布式搭建详解】 在搭建 Hadoop 2.6.5 伪分布式环境时,我们需要经历一系列步骤,确保所有必要的组件正确配置。以下是一个详细的指南: 1. **安装基础工具**: - `ssh`:用于远程登录和无密码登录。 ...
总之,搭建Hadoop伪分布式环境是大数据分析和处理的基础,这个过程涉及到用户管理、SSH配置、目录权限设置、软件安装、环境变量配置以及Hadoop配置文件的修改。理解并熟练掌握这些步骤对于任何想在单机上模拟Hadoop...
hadoop2.2伪分布式集群搭建 #查看防火墙状态 service iptables status #关闭防火墙 service iptables stop #查看防火墙开机启动状态 chkconfig iptables --list #关闭防火墙开机启动 chkconfig iptables off
在VMware虚拟机上,安装hadoop集群,采用的是伪分布式搭建,从安装jdk到hadoop的环境配置,全套都有,依据这个文档可以在个人Vmware上搭建自己的hadoop集群,这个集群有一个主节点,两个从节点。按照这个文档搭建后...