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

linux下(CentOS)Hadoop集群伪分…

2015-05-18 20:57 399 查看
一. 前言

       Hadoop 伪分布式模式是在单机上模拟 Hadoop 分布式,单机上的分布式并不是真正的伪分布式,而是使用线程模拟分布式。Hadoop 本身是无法区分伪分布式和分布式的,两种配置也很相似,唯一不同的地方是伪分布式是在单机器上配置,数据节点和名字节点均是一个机器。 现在很多初学者根本不具备搭建完全分布式集群的硬件环境,大多都是在单机下进行学习和实验。 下面将我在安装期间遇到的问题和解决方法记录下来,和网友共勉。本人当时是在LinuxCent
OS 6.3
下搭建成功Hadoop伪分布式测试环境。
 

搭建测试环境所需的软件包括:jdk-6u13-linux-i586.bin 、hadoop-1.0.1.tar.gz。测试服务器操作系统LinuxCent OS 6.3。

1、JDK安装及Java环境变量的配置

说明:1.CentOS默认情况下,会安装OpenOffice之类的软件,这些软件需要Java的支持,所以系统默认会安装JDK的环境,若需要特定的Java环境,最好将默认的JDK彻底删除;

2.查看默认的JDK命令:java -version

3.但是如果先删除默认再装新的JDK,则与之相关的软件比如openoffice等也会随之删除,所以,应该先装新的jdk再卸系统默认自带的jdk。

***卸载系统自带原JDK的方法示例:(注意,此操作应该在新jdk安装完毕后再执行

终端输入,查看gcj的版本号:rpm -qa|grep  jdk

得到结果:

jdk-1.7.0_04-fcs.x86_64

java-1.6.0-openjdk-1.6.0.0-1.49.1.11.4.el6_3.x86_64

终端输入,卸载:yum -y remove javajava-1.6.0-openjdk-1.6.0.0-1.49.1.11.4.el6_3.x86_64

等待系统自动卸载,最终终端显示 Complete,卸载完成

二1.1 JDK安装
root 用户登陆,使用命令mkdir/usr/program新建目录/usr/program ,下载JDK 安装包jdk-6u13-linux-i586.bin,将其复制到目录/usr/program下,用cd命令进入该目录,执行命令“./jdk-6u13-linux-i586.bin”,命令运行完毕即安装完成,将在目录下生成文件夹/jdk1.6.0_13,此即为jdk被成功安装到目录:/usr/program/jdk1.6.0_13下。

1.2 java环境变量配置

由于下载JDK是免安装版,只需解压到指定的目录就完成了安装,将JDK安装到/u01/hadoop/jdk目录下。
# tar-zxvf jdk-7u67-linux-x64.tar.gz

# mv jdk1.7.0_67/ /u01/hadoop/jdk

配置JDK环境变量

vi .bash_profile(/etc/profile )

export JAVA_HOME=/u01/hadoop/jdk

exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar

export PATH=$JAVA_HOME/bin:$PATH

(注意:在配置PATH环境变量时,一定要将$JAVA_HOME/bin放置在$PATH前面。这样就不会使用系统默认的JDK)

执行source命令,立即生效JDK环境变量

#chmod  +x /etc/profile ;增加执行权限
#source  /etc/profile;使配置生效!
配置完毕后,在命令行中输入:java-version,如出现下列信息说明java环境安装成功。

java version "1.6.0_13"
Java(TM) SE Runtime Environment (build1.6.0_13-b03)
Java HotSpot(TM) Server VM (build 16.3-b01, mixedmode) 

三 查看主机名
使用下面命令进行查看主机名,若要更改,请查看下一步操作。

hostname





修改主机名

第一步,查看主机IP地址。

用下面命令即可查看,本机IP为192.168.1.101(以下操作请使用root用户方可执行)

ifconfig





第二步,若想更改主机名,则可以通过修改文件“/etc/sysconfig/network”中的HOSTNAME后面的值,即可改成我们想要的名字。

用下面命令进行修改主机名。

nano /etc/sysconfig/network(centons7修改主机名和此不同)

第三步,修改文件“/etc/hosts”。

 主机名和IP解析配置 (这一步非常重要!!!)

[root@master ~]# vi /etc/hosts

 



注:因为是在伪分布模式下,所以master与slave是一台机器

 

说明:这三个位置的配置必须协调一致,Hadpoop才能正常工作!主机名的配置非常重要!

我在上面的配置中没有修改主机名,还是用的mycentos这个主机名,这样容易出错,最好还是将主机名修改为master,在配置中使127.0.0.1 master对应!

集群模式则修改为如图所示。(两个机子修改为一样的,第一个为namenode,第二个datanode)





四、SSH无密码验证配置

注:Hadoop 需要使用SSH 协议,namenode 将使用SSH 协议启动 namenode和datanode进程,伪分布式模式数据节点和名称节点均是本身,所以配置 SSH localhost无密码验证登录就会方便很多。实际上,在Hadoop的安装过程中,是否免密码登录是无关紧要的,但是如果不配置免密码登录,每次启动Hadoop都需要输入密码以登录到每台机器的DataNode上,考虑到一般的Hadoop集群动辄拥有数百或上千台机器,因此一般来说都会配置SSH的免密码登录!在此我们选择配置SSH为免密码登录模式!!!

配置为可以免密码登录本机:

首先查看在“当前用户”文件夹下是否存在.ssh 文件夹(注意ssh前面有“.”,这是一个隐藏文件夹)。输入命令查看此文件夹是否存在。一般来说,安装SSH时会自动在当前用户下创建这个隐藏文件夹,如果没有,可以手创建一个。

下面的配置我是在root超级用户下进行的:

[root@centos1 ~]# ls –a
发现.ssh文件夹已经存在。

接下来输入命令(注意下面命令中不是双引号,是两个单引号):

方法一:用root用户登录,在root目录下执行如下命令:ssh-keygen -t rsa
[root@mycentos ~]# ssh-keygen-t  rsa
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):  & 按回车默认路径 &
Created directory '/root/.ssh'. &创建/root/.ssh目录&
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Your public key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
c6:7e:57:59:0a:2d:85:49:23:cc:c4:58:ff:db:5b:38root@master
通过以上命令将在/root/.ssh/目录下生成id_rsa私钥和id_rsa.pub公钥。进入/root/.ssh目录在namenode节点下做如下配置:
[root@master .ssh]# cat id_rsa.pub >authorized_keys
配置完毕,可通过ssh 本机IP 测试是否需要密码登录。
方法二、或者按照如下方式配置:
生成签名文件:
[root@centos1 ~]# ssh-keygen -t dsa -P ' '–f  ~/.ssh/id_dsa
解释一下,ssh-keygen代表生成秘钥;-t(注意区分大小写)表示指定生成的秘钥类型;dsa是dsa密钥认证的意思。即秘钥类型;-P用于提供密语;-f指定生成的秘钥文件。(其中~代表当前用户文件夹,如home/wade),这条命令会在.ssh文件夹下创建id_dsa及id_dsa.pub两个文件,这是SSH的一对私钥和秘钥,类似于锁和钥匙。
[root@centos1 ~]# cat ~/.ssh/id_dsa.pub>> ~/.ssh/authorized_keys
这条命令用于把公钥加到用于认证的公钥文件中。这里的authorized_keys是用于认证的公钥文件。
至此免密码登录本机已配置完毕,可通过ssh 本机IP测试是否需要密码登录。操作如图所示:说明配置无密码登录成功!

五 Hadoop配置

(修改4个配置文件),进入到hadoop-1.1.2/conf目录下
 如果对指令不熟悉(请使用工具修改,例如:Notepad++等)

 hadoop-env.sh

 在第九行,去掉注释,配置JAVA_HOME

(单点不用配置

配置master和slave

配置masters文件和slaves文件(一般此二文件的默认内容即为下述内容,无需重新配置)

[root@master conf]# vi masters

localhost

[root@master conf]# vi slaves

localhost

注:因为在伪分布模式下,作为master的namenode与作为slave的datanode是同一台服务器,所以配置文件中的ip是一样的

两个文件在/usr/local/hadoop/hadoop-0.21.0/conf/下面,
master文件填写
192.168.1.101(namenode的IP)
slave文件填写
192.168.1.101(datanode的IP)
因为是伪分布,所以都一样,且只有一个。

若为集群,则为
master文件填写
192.168.1.147(namenode的IP)
slave文件填写
192.168.1.103(datanode的IP)



配置三个xml文件

三个xml文件都是在/usr/local/hadoop/hadoop-0.21.0/conf/

$ vi core-site.xml

fs.default.name
hdfs://outing(主机名):9000



$ vi hdfs-site.xml

 


$ vi mapred-site.xml



4.5格式化hadoop的hdfs

指令:hadoop namenode -format



4.6启动hadoop

指令:start-all.sh



4.7验证hadoop是否启动成功

指令:jps



成功了会出现下面五个

NameNode

SecondaryNameNode

DataNode

JobTracker

TaskTracker

还可以通过浏览器验证
http://linux的ip:50070(hdfs管理界面) http://linux的ip:50030(mapreduce管理界面)
但是必须先在windows系统下C:\Windows\System32\drivers\etc添加linux主机名和ip的映射关系

上传hadoop dfs-put 你要上传的目录



下载hadoop dfs-get 云端的目录 本地目录

关闭防火墙(关闭开机启动)

指令:chkconfig iptables off

六.Hadop使用

计算输入文本中词语数量的程序。WordCount在Hadoop主目录下的java程序包hadoop-examples-1.0.1.jar 中,执行步骤如下:

5.1. 首先启动hadoop所有进程:bin/start-all.sh,然在/usr/local/hadoop/hadoop-1.0.1/bin/目录下进行如下操作:

 

(新建目录名称,可任意命名),在test下创建文本file01、file02,分别输入数个单词。



5.2.在hdfs分布式文件系统创建目录input:bin/hadoop
fs -mkdirinput;


  


然后可以使用bin/hadoop fs -ls查看。





注:删除目录:bin/hadoop fs -rmr ***;删除文件:bin/hadoop fs -rm ***

 

5.3.离开hodoop的安全模式:# bin/hadoop dfsadmin–safemode leave

注:Hadoop的安全模式相关命令:#bin/hadoop dfsadmin–safemode enter/leave/get/wait

Hadoop的HDFS系统在安全模式下只能进行“读”操作!不能进行文件等的删除,创建和更新操作!

5.4.将数据从linux文件系统复制到HDFS分布式文件系统中的input文件夹中

#bin/hadoop fs -put/usr/local/hadoop/hadoop-1.0.1/test/* input





5.5.执行例子中的WordCount:bin/hadoop jar hadoop-1.0.1-examples.jarwordcount input
output





参考:

 



5.6.查看执行结果:bin/hadoop dfs -cat output/*





5.7.执行完毕后,可进入web界面刷新查看runningjob及completed
job的显示。

5.8.关闭hadoop所有进程:bin/stop-all.sh。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: