[置顶] 基于cloudera的hadoop分布式系统自动化安装

1       Hadoop的安装注意事项

最近云计算在中国极为火爆,但看了云计算的那些云山雾罩的概念后,实在让人望而却步。还好不是所有的东西都摸不着头脑,Hadoop就是实实在在的技术之一。不才最近仔细品读了Hadoop的基础资料,特别是如何部署Hadoop的相关技术文档,发现其中有许多不为人注意的东西,在此整理一下。Hadoop 开发者入门专刊(pdf) 是目前比较权威的文档;有什么与Hadoop相关的技术问题也可以到专业的Hadoop技术论坛上去讨论。

1.1  Hadoop 集群的组成成份

Hadoop的核心功能有两个:HDFSMapReduce 。与HDFS相关的服务有NameNode SecondaryNameNode DataNode ;与MapReduce 相关的服务有JobTracker TaskTracker 两种。

Hadoop集群中有两种角色:masterslavemaster又分为主master与次master。其中:

master同时提供NameNode SecondaryNameNode JobTracker 三种服务;次master只提供SecondaryNameNode 服务;所有slave可以提供DateNode TaskTracker 两种服务。

1.2  Hadoop有三种集群方式可以选择:

Local (Standalone) Mode(无集群模式)

Pseudo-Distributed Mode(单机集群模式)

Fully-Distributed Mode(多机集群模式)

一个Hadoop集群由多台电脑组成,每台电脑可作为一种或多种角色存在。

当使用Pseudo-Distributed Mode创建Hadoop集群时,一台电脑同时完成主masterslave两种角色的任务。在Fully-Distributed Mode下,如果只有一台电脑作为master,则此电脑完成主master的任务;如果有多台电脑作为master存在,则第一台电脑完成主 master的任务,其它电脑完成次master的任务。

1.3  实际部署Hadoop集群

在实际操作中,集群中的电脑名字都是通过/etc/hosts文件指定的。集群中主master是核心,担任这种角色的电脑在其/etc/hosts中保存有集群中所有电脑的名字。次 master与所有的slave只负责与主master联系,所以在这些计算机上的/etc/hosts中只要保存自身和主master的计算机别名即可。

集群模式的选择主要靠主master$HADOOP_HOME /conf /目录下的mastersslaves两个文件配置完成。如果需要Pseudo-Distributed Mode,则mastersslaves两个文件的内容同时指向主master电脑名字即可。如果需要Fully-Distributed Mode,则masters文件中第一行记录的是主master电脑名字,其它行记录的是次master电脑名字。无密码SSH 登录

启动Hadoop的方式是在主master上调用下面的命令:

$HADOOP_HOME /bin/start-all.sh

此调用过程中,Hadoop依次启动以下服务:

在主master上启动NameNode 服务;

在主master上启动SecondaryNameNode 服务;

在次master上启动SecondaryNameNode 服务;

在所有slave上启动DataNode 服务;

在主master上启动JobTracker 服务;

在所有slave上的TaskTracker 服务。

 

部署Hadoop过程中Hadoop需要启动服务,在此需要注意以下几点:

(1)     启动NameNode JobTracker 服务不需要SSH授权;

(2)     需要通过SSH登录之后才能启动SecondaryNameNode DataNode 以及TaskTracker 服务,因此:因为需要启动SencondaryNameNode 服务,所以要为主master提供SSH授权;因为需要启动SencoddaryNameNode 服务,所以要为所有的次master提供SSH授权;因为需要启动DataNode TaskTracker 服务,所以要为所有的slave提供SSH授权。总而言之,要为Hadoop集群中的所有计算机提供SSH授权。

为什么要提供无密码SSH登录方式呢?为的是图省事儿。试想在启动 Hadoop集群过程中,要手动输入每一台电脑的SSH密码将是一件多么烦人的事!SSH授权的方法在这里不做详细的描述。无密码SSH登录技术也是相对成熟的技术。但有一个环节需要注意,那就是文件的访问权限问题。

表现为:

Linux系统中$HOME目录下的.ssh目录为用户所有,权限必须为700(只有用户自己可以全权访问);

.ssh目录下的授权文件“authorized_keys”为用户所有,权限必须为644。本节有关部署Hadoop应该注意的事项介绍完毕。

 

2       三种安装模式的说明

2.1  本地安装模式

HDFS放宽了(relaxPOSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。当前最新版本是hadoop0.20.1。下面就hadoop0.20.1为蓝本,介绍在UbuntuLinux9.10hadoop本地安装的方法。

支持的平台:

Linux,可作为开发和产品部署的平台;

Windows,可作为开发平台。

事先需要的软件:

1.JavaTM1.6.x,必须安装,建议选择Sun公司发行的Java版本;

2.ssh必须安装,并保证sshd运行,hadoop将以ssh进行通讯;

3.如果是windows,则需要装Cygwin,用以支持shell命令。

本地模式安装步骤:

1.hadoop安装包解压缩到某目录下;

2.修改conf/hadoop-env.sh文件,exportJAVA_HOME=那行设置正确的JAVA_HOME位置,当然如果事先在操作系统已经setJAVA_HOME,可以忽略此步骤;

Hadoop本地模式安装完了

测试一下运行效果:

$mkdirinput

$cpconf/*.xmlinput

$bin/hadoopjarhadoop-*-examples.jargrepinputoutput'dfs[a-z.]+'

$catoutput/*

这个示例程序是hadoop自带的,用于把conf下的xml文件拷贝到input目录下,并且找到并显示所有与最后一个参数的正则表达式相匹配的行,output是输出文件夹。本节关于Hadoop本地安装介绍到这里,希望你有所收获。

2.2  伪分布式模式

下面就hadoop0.20.1为蓝本,介绍在UbuntuLinux9.10hadoop伪分布安装的方法。支持的平台:

Linux,可作为开发和产品部署的平台;

Windows,可作为开发平台。

事先需要的软件:

1.JavaTM1.6.x,必须安装,建议选择Sun公司发行的Java版本;

2.ssh必须安装,并保证sshd运行,hadoop将以ssh进行通讯;

3.如果是windows,则需要装Cygwin,用以支持shell命令。

安装步骤

1.hadoop安装包解压缩到某目录下;

2.修改conf/hadoop-env.sh文件,exportJAVA_HOME=那行设置正确的JAVA_HOME位置

3.修改conf/core-site.xml,改为:

 <configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration> 

4.修改conf/hdfs-site.xml,改为:

  <configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration> 

5.修改conf/mapred-site.xml,改为:

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration> 

6.设置本机ssh本机无密码

 先测试一下,输入命令sshlocalhost,如果提示密码,则需要进行以下操作:

 $ssh-keygen-tdsa-P''-f~/.ssh/id_dsa

 $cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

7.格式化namenode

 $bin/hadoopnamenode-format

8.启动Hadoop

 $bin/start-all.sh

至此,hadoop伪分布模式安装完毕!

2.3  完全分布式模式

Hadoop完全分布模式安装步骤(这里的步骤只让hadoop能跑,不带任何调优步骤):

1.下载并解压hadoop到集群中某台服务器目标目录。

2.配置/etc/hosts文件

2.1确认集群中所有服务器均有hostname,并记录IP

2.2每一台服务器的/etc/hosts文件里配置hostnameIP对应关系,加快解析速度。

3.配置SSH免密码登陆

3.1每台服务器上运行:

 $ssh-keygen-tdsa-P''-f~/.ssh/id_dsa

 $cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

 3.2把各台服务器的~/.ssh/authorized_keys文件内容合并到一个总的authorized_keys文件;

 3.3把那个总的authorized_keys文件scp到每台服务器,替换原有的authorized_keys文件;

 3.4互相SSH对方机器,确认SSH登陆不需要密码

4.配置各台服务器时间,确保每台服务器时间相同;Hadoop完全分布模式安装过程中还要配置Hadoop

 

5.配置hadoop

 5.1配置conf/hadoop-env.sh文件。配置JAVA_HOME一行,配置正确的路径。

 5.2配置conf/core-site.xml文件

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://host:9000</value>

</property>

</configuration>

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://host:9000</value>

</property>

</configuration>

注:这里的host必须改为对应的namenodehostname

 5.3配置conf/hdfs-site.xml文件,如果不修改使用默认设置也可以。

 5.4配置conf/mapred-site.xml文件

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>

注:这里的host必须改为对应的namenodehostname

6.配置conf/slavesconf/master文件。 slaves文件里写datanodehostnameIPmaster里写namenodesecondarynamenodehostnameIP,每行写一个服务器,以#开头的行视为注释。

7.分发hadoop

 直接通过scp,把hadoop整个目录复制到各台服务器的相同目录即可。

8.格式化hadoopnamenode

 执行命令:$bin/hadoopnamenode-format

9.启动hadoop

 执行命令:$bin/start-all.sh

至此,Hadoop完全分布模式安装完毕,通常启动到所有服务器完全识别出来需要一定的时间(我这里是5分钟左右),要耐心等待,在namenode节点上,打开浏览器,输入http://localhost:50070/即可看到整个hadoop情况,JobTracker情况可以看每一个服务器的http://localhost:50030/

3       Hadoop环境搭建

JDK的安装:要求必须安装jdk1.5.07以上的版本。

3.1  硬件环境

我们采用了3台机器来构建,都安装的是RedHat4.1.2-42系统,并且都有一个名为“mingjie“的帐号,如下:

主机名称:hdfs1ip:192.168.0.221功能:NameNode,JobTracker

主机名称:hdfs2ip:192.168.0.227功能:DataNode,TaskTracker

主机名称:hdfs3ip:192.168.0.228功能:DataNode,TaskTracker

重点:修改3台机器的/etc/hosts,让彼此的主机名称和ip都能顺利解析

127.0.0.1localhost

192.168.0.37hdfs1

192.168.0.43hdfs2

192.168.0.53hdfs3 内容来自dedecms

3.2  安装java环境

每台机器都要安装java环境,我们的路径统一为“/opt/modules/jdk1.6,并添加到系统环境变量sudovi/etc/profile

JAVA_HOME=/opt/modules/jdk1.6

PATH=$JAVA_HOME/bin:$PATH:$CATALINA_HOME/bin

CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar

exportJAVA_HOME

3.3  下载系统

下载hadoop0.17.1,将hadoop解压到/home/mingjie/,建议最好也将hadoop的目录添加到环境变量里面去:

HADOOP_HOME=/home/mingjie/hadoop-0.17.1#这是hadoop的主目录

exportHADOOP_HOME

HADOOP_CONF_DIR=$HADOOP_HOME/conf#这是hadoop的配置文件目录

exportHADOOP_CONF_DIR

HADOOP_LOG_DIR=/home/mingjie/hadoop-0.17.1/log#存放运行日志目录

exportHADOOP_LOG_DIR

exportPATH=$PATH:$HADOOP_HOME/binHadoop环境搭建过程中还需要安装SSH

3.4  安装ssh,并生成公钥和私钥

安装ssh,并生成公钥和私钥.运行ssh-keygen-trsa,根据屏幕提示直接选择“回车”,会在用户目录~/.ssh/产生两个文件,id_rsaid_rsa.pub

cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

以上配置完成后,执行一下sshlocalhsot,确认你的每台机器都可以使用ssh 织梦内容管理系统

3.5  复制SSHkey

master服务器上的authorized_keys的内容加到slave两台机器的authorized_keys文件中。让master也可以不需要密码访问2slave服务器。

Sudo scpauthorized_keyshdfs2:/home/mingjie/.ssh/

sudoscpauthorized_keyshdfs3:/home/mingjie/.ssh/

ssh  hdfs2

ssh  hdfs3

3.6  修改主机和从机文件

我们要修改hadoop[conf/masters][conf/slaves]2个文件:

Master设置(<HADOOP_HOME>/conf/masters):hdfs1

Slave设置(<HADOOP_HOME>/conf/slaves):hdfs2hdfs3

3.7  修改配置文件

修改[conf/hadoop-env.sh]:

exportJAVA_HOME=/opt/jdk1.6.0_03

3.8  修改配置文件

修改[conf/hadoop-site.xml],这里只是几个常用的属性配置,有关hadoop的性能优化调整,需要研究hadoop-default.xml

3.9  hadoop的整体环境拷贝

然后将hadoop的整体环境拷贝到hdfs2hdfs3上面去

scp-r/home/mingjie/hadoop.0.17.1hdfs2:/home/mingjie/hadoop.0.17.1

scp-r/home/mingjie/hadoop.0.17.1hdfs3:/home/mingjie/hadoop.0.17.1

3.10         名称节点实始化

hdfs1这个namenode上面格式化一个新的分布式文件系统HDFS,就是hadoop-site.xml文件中指定的hadoop.tmp.dir路径

<HADOOP_HOME>/bin/hadoopnamenode–format

到此大致上就完成了hadoop环境搭建

3.11         系统启动与停止

启动hadoop<HADOOP_HOME>/bin/start-all.sh

停止hadoop<HADOOP_HOME>/bin/stop-all.sh

说明:

(1)执行启动Hadoop进程后,

master服务器会启动3java进程,分别的NameNode,SecondNameNode,JobTracker,LOG目录下会产生2个文件,分别对应NameNode的运行日志和JobTracker的运行日志,

slave服务器会启动2java进程,分别为DataNode,TaskTracker,LOG目录下会产生2个文件,分别对应DataNode的运行日志和TaskTracker的运行日志,可以通过查看日志分析hadoop的启动是否正确。

(2)通过IE浏览分布式文件系统中的文件

访问http://hdfs1:50030可以查看JobTracker的运行状态。

访问http://360quan-1:50060可以查看TaskTracker的运行状态。

访问http://360quan-1:50070可以查看NameNode以及整个分布式文件系统的状态。本节关于如何快速实现Hadoop环境搭建方面的内容介绍到这里。

4       Cloudera下实现Hadoop方案规划

Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架。MapReduce的概念来源于Google实验室,它是一个简化并行计算的编程模型,适用于大规模集群上的海量数据处理,目前最成功的应用是分布式搜索引擎。随着2007年底该模式Java开源实现项目Apache Hadoop的出现,使得程序员可以轻松地编写分布式并行程序,并将其运行于计算机集群上,完成海量数据的计算。 

近两年尤其是今年国内外采用 MapReduce模型的应用也逐渐丰富起来,如像NTT KDDI和中国移动这类的电信公司采用该模型分析用户信息,优化网络配置;美国供电局采用该模型来分析电网现状;包括VISAJP摩根在内的金融公司采用该模型来分析股票数据;包括Amazonebay在内的零售商和电子商务公司也开始采用该模型;甚至部分生物公司也采用该模型来进行DNA测序和分析。然而Hadoop安装、部署、管理的难度非常大,这使用很多用户对Hadoop望而却步,好在这种情况不久就得到了改善,Cloudera提供了非常简单的Hadoop的发布版本,能够十分方便地对Hadoop进行安装、部署和管理,这导致目前大约有75%的Hadoop新用户使用Cloudera。下面是利用Cloudera 实现Hadoop 的具体规划。

规划 :Hadoop有三种运行模式:单机(非分布)运行模式、伪分布运行模式和分布式运行模式。其中前两种运行模式体现不了 Hadoop 分布式计算的优势,并没有什么实际意义(当然它们对程序的测试及调试还是很有帮助的),因此在这里还是采用实际环境中使用的分布式运行模式来部署。

4.1  主机规划

在这里拟采用三台主机搭建Hadoop环境,由于后期还需要测试增删主机及跨网段主机对Hadoop环境的影响,特将Hadoop主机规划如下:

Hadoop-01 10.137.253.201

Hadoop-02 10.137.253.202

Hadoop-03 10.137.253.203

准备后期加入的测试主机

Hadoop-04 10.137.253.204

准备后期加入的跨网段测试主机

Firehare-303 10.10.3.30 

 

4.2  Hadoop环境规划

对于Hadoop来说,最主要的是两个内容,一是分布式文件系统HDFS,一是MapReduce计算模型。在分布式文件系统HDFS看来,节点分为NameNode DataNode,其中NameNode只有一个,DataNode可以是很多;在MapReduce计算模型看来,节点又可分为JobTracker TaskTracker,其中JobTracker只有一个,TaskTracker可以是很多。因此在实际的Hadoop环境中通常有两台主节点,一台作为NameNodeI/O节点??),一台作为JobTracker(管理节点??),剩下的都是从节点,同时当做DataNode TaskTracker使用。当然也可以将NameNodeJobTracker安装在一台主节点上。由于测试机数量有限,所以在这里是让 Hadoop-01做为NamenodeJobtracker其它主机则作为DataNodeTaskTracker(如果Hadoop环境中主机数量很多的话,还是建议将NamenodeJobTracker部署到不同的主机,以提高计算的性能)。本节关于利用Cloudera 实现Hadoop 的规划介绍完毕,请关注下节Hadoop安装。

 

5       Cloudera下的hadoop安装步骤

规划好了就开始安装Hadoop,如前言中所说使用ClouderaHadoop发布版安装Hadoop是十分方便的,首先当然是在每台主机上一个干净的操作系统(我用的是Ubuntu 8.04,用户设为Hadoop,其它的版本应该差不多),然后就是安装Hadoop了(这样安装的是Hadoop-0.20,也可以安装Hadoop- 0.18的版本,反正安装步骤都差不多。注意,不能同时启用Hadoop-0.20Hadoop-0.18)。由于每台机器安装步骤都一样,这里就写出了一台主机的安装步骤,主要分为以下几个步骤:

5.1  设置Cloudera的源

生成Cloudera源文件(这里采用的是Hadoop-0.20版本):

sudo vi /etc/apt/sources.list.d/cloudera.list#稳定版(Hadoop-0.18#deb http://archive.cloudera.com/debian hardy-stable contrib#deb-src http://archive.cloudera.com/debian hardy-stable contrib#测试版(Hadoop-0.20deb http://archive.cloudera.com/debian hardy-testing contribdeb-src http://archive.cloudera.com/debian hardy-testing contrib生成源的密钥:

sudo apt-get install curlcurl -s http://archive.cloudera.com/debian/archive.key | sudo apt-key add -

 

5.2  安装Hadoop

更新源包索引:

sudo apt-get updatesudo apt-get dist-upgrade安装Hadoop

sudo apt-get install hadoop-0.20 hadoop-0.20-conf-pseudo 

 

5.3  部署

安装好这几台主机的Hadoop环境之后,如果要实现Hadoop 还要对它们进行分布式运行模式的部署了,首先是设置它们之间的互联。

5.3.1       主机互联

Hadoop环境中的互联是指各主机之间网络畅通,机器名与IP地址之间解析正常,可以从任一主机ping通其它主机的主机名。注意,这里指的是主机名,即在Hadoop-01主机上可以通过命令ping Hadoop-02pingHadoop-02主机(同理,要求这几台主机都能相互Ping通各自的主机名)。可以通过在各主机的/etc /hosts文件来实现,具体设置如下:

sudo vi /etc/hosts127.0.0.1 localhost10.x.253.201 hadoop-01 hadoop-0110.x.253.202 hadoop-02 hadoop-0210.x.253.203 hadoop-03 hadoop-0310.x.253.204 hadoop-04 hadoop-0410.x.3.30 firehare-303 firehare-303将每个主机的hosts文件都改成上述设置,这样就实现了主机间使用主机名互联的要求。

 注:如果深究起来,并不是所有的主机都需要知道Hadoop环境中其它主机主机名的。其实只是作为主节点的主机(如NameNode JobTracker),需要在该主节点hosts文件中加上Hadoop环境中所有机器的IP地址及其对应的主机名,如果该台机器作Datanode 用,则只需要在hosts文件中加上本机和主节点机器的IP地址与主机名即可(至于JobTracker主机是否也要同NameNode主机一样加上所有机器的IP和主机名,本人由于没有环境,不敢妄言,但猜想是要加的,如果哪位兄弟有兴趣,倒是不妨一试)。在这里只是由于要作测试,作为主节点的主机可能会改变,加上本人比较懒,所以就全加上了。:) 下面看一下Cloudera实现Hadoop 时的相关设置。

5.3.2       计算机帐号设置

Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同用户名的帐户。由于这里采用的是Cloudera发布的Hadoop包,所以并不需要这方面的设置,大家了解一下即可。

5.3.3       SSH设置

Hadoop 分布式环境中,主节点(NameNodeJobTracker) 需要通过 SSH 来启动和停止从节点(DataNodeTeskTracker)上的各类进程。因此需要保证环境中的各台机器均可以通过 SSH 登录访问,并且主节点用 SSH 登录从节点时,不需要输入密码,这样主节点才能在后台自如地控制其它结点。可以将各台机器上的 SSH 配置为使用无密码公钥认证方式来实现。 Ubuntu上的SSH协议的开源实现是OpenSSH, 缺省状态下是没有安装的,如需使用需要进行安装。下面再来看一下利用Cloudera实现Hadoop 过程中如何安装OpenSSH

5.3.3.1         安装OpenSSH

安装OpenSSH很简单,只需要下列命令就可以把openssh-clientopenssh-server给安装好: sudo apt-get install ssh

设置OpenSSH的无密码公钥认证

首先在Hadoop-01机器上执行以下命令:

hadoop@hadoop-01:~$ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):Enter passphrase (empty for no passphrase):(在这里直接回车)Enter same passphrase again:(在这里直接回车)Your identification has been saved in /home/hadoop/.ssh/id_rsa.Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.The key fingerprint is:9d:42:04:26:00:51:c7:4e:2f:7e:38:dd:93:1c:a2:d6 hadoop@hadoop-01上述命令将为主机hadoops-01上的当前用户hadoop生成其密钥对,该密钥对被保存在/home/hadoop/.ssh/id_rsa 文件中,同时命令所生成的证书以及公钥也保存在该文件所在的目录中(在这里是:/home/hadoop/.ssh),并形成两个文件 id_rsaid_rsa.pub。然后将 id_rsa.pub 文件的内容复制到每台主机(其中包括本机hadoop-01)/home/hadoop/.ssh/authorized_keys文件的尾部,如果该文件不存在,可手工创建一个。

注意:id_rsa.pub 文件的内容是长长的一行,复制时不要遗漏字符或混入了多余换行符。

5.3.3.2         无密码公钥SSH的连接测试

hadoop-01 分别向 hadoop-01, hadoop-04, firehare-303 发起 SSH 连接请求,确保不需要输入密码就能 SSH 连接成功。注意第一次 SSH 连接时会出现类似如下提示的信息:

The authenticity of host [hadoop-01] can't be established. The key fingerprint is: c8:c2:b2:d0:29:29:1a:e3:ec:d9:4a:47:98:29:b4:48 Are you sure you want to continue connecting (yes/no)?请输入 yes, 这样 OpenSSH 会把连接过来的这台主机的信息自动加到 /home/hadoop/.ssh/know_hosts 文件中去,第二次再连接时,就不会有这样的提示信息了。本节关于利用Cloudera实现Hadoop 的内容就介绍到这里。

 

 

6       Cloudera实现Hadoop过程中Hadoop设置揭秘

 

6.1  设置主节点的Hadoop

6.1.1       设置JAVA_HOME

HadoopJAVA_HOME是在文件/etc/conf/hadoop-env.sh中设置,具体设置如下:

sudo vi /etc/conf/hadoop-env.shexport JAVA_HOME="/usr/lib/jvm/java-6-sun"

6.1.2       Hadoop的核心配置

Hadoop的核心配置文件是/etc/hadoop/conf/core-site.xml,具体配置如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>fs.default.name</name>

<!--<value>hdfs://localhost:8020</value>-->

<value>hdfs://hadoop-01:8020</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/var/lib/hadoop-0.20/cache/${user.name}</value>

</property>

</configuration>

6.1.3       设置Hadoop的分布式存储环境

 Cloudera 实现Hadoop 过程中Hadoop的分布式环境设置主要是通过文件/etc/hadoop/conf/hdfs-site.xml来实现的,具体配置如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>dfs.replication</name>

<!--<value>1</value>-->

<value>3</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

<property><!-- specify this so that running 'hadoop namenode -format' formats the right dir --><name>dfs.name.dir</name>

<value>/var/lib/hadoop-0.20/cache/hadoop/dfs/name</value>

</property>

</configuration>

6.1.4       设置Hapoop的分布式计算环境

Cloudera 实现Hadoop 过程中Hadoop的分布式计算是采用了Map/Reduce算法,该算法环境的设置主要是通过文件/etc/hadoop/conf/mapred-site.xml来实现的,具体配置如下:

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>mapred.job.tracker</name><!--<value>localhost:8021</value>--><value>hadoop-01:8021</value></property></configuration> copyright dedecms

 

6.1.5       设置Hadoop的主从节点

 

首先设置主节点,编辑/etc/hadoop/conf/masters文件,如下所示:

hadoop-01然后是设置从节点,编辑/etc/hadoop/conf/slaves文件,如下所示:

hadoop-02

hadoop-03

hadoop-04

firehare-303 

 

6.1.6       设置从节点上的Hadoop

从节点上的Hadoop设置很简单,只需要将主节点上的Hadoop设置,复制一份到从节点上即可。

scp -r /etc/hadoop/conf hadoop-02:/etc/hadoopscp -r /etc/hadoop/conf hadoop-03:/etc/hadoopscp -r /etc/hadoop/conf hadoop-04:/etc/hadoopscp -r /etc/hadoop/conf firehare-303:/etc/hadoopCloudera 实现Hadoop过程中对Hadoop配置完以后需要启动Hadoop服务。

 

6.2  启动Hadoop

 

6.2.1       格式化分布式文件系统

在启动Hadoop之前还要做最后一个准备工作,那就是格式化分布式文件系统,这个只需要在主节点做就行了,具体如下:

/usr/lib/hadoop-0.20/bin/hadoop namenode -format

 

6.2.2       启动Hadoop服务

启动Hadoop可以通过以下命令来实现:

/usr/lib/hadoop-0.20/bin/start-all.sh注意:该命令是没有加sudo的,如果加了sudo就会提示出错信息的,因为root用户并没有做无验证ssh设置。以下是输出信息,注意hadoop-03是故意没接的,所以出现No route to host信息。这样Hadoop就正常启动了!

6.2.3       测试Hadoop

Hadoop架设好了,接下来就是要对其进行测试,看看它是否能正常工作,如果测试已经成功,这说明Hadoop部署成功,能够在上面进行Map/Reduce分布性计算了。本节关于Cloudera 实现Hadoop的相关内容到这里就结束了,谢谢关注。

 

 

你可能感兴趣的:(java,mapreduce,hadoop,集群,ssh,服务器)