人人范文网 范文大全

在三台虚拟机上部署多节点Hadoop

发布时间:2020-03-01 19:37:19 来源:范文大全 收藏本文 下载本文 手机版

cd /etc/network vi interfaces 进入vi后,编辑 auto eth0 iface eth0 inet static addre IP地址 netmask 掩码 gateway 网关

重启SSH:

serivce h restart 重启网卡: /etc/init.d/networking restart 取得root权限:

sudo pawd su 1.硬件环境

共有3台机器,均使用的linux系统,Java使用的是openjdk-6-jdk sudo apt-get update sudo apt-get install openjdk-6-jdk 修改主机名:

su vi /etc/hostname IP配置如下:

hadoop1:192.168.75.132(NameNode) hadoop2:192.168.75.131(DataNode) hadoop3:192.168.75.133 (DataNode) 这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析。一个很简单的测试办法就是ping一下主机名,比如在hadoop1上ping hadoop2,如果能ping通就OK!若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。

以本文为例,hadoop1(NameNode)中的/etc/hosts文件看起来应该是这样的:

vi /etc/hosts 127.0.0.1 hadoop1 localhost 192.168.75.132 hadoop1 hadoop1 192.168.75.131 hadoop2 hadoop2 192.168.75.133 hadoop3 hadoop3 hadoop2(DataNode)中的/etc/hosts文件看起来就应该是这样的: 127.0.0.1 hadoop2 localhost 192.168.75.132 hadoop1 hadoop1 192.168.75.131 hadoop2 hadoop2 hadoop3(DataNode)中的/etc/hosts文件看起来就应该是这样的: 127.0.0.1 hadoop3 localhost 192.168.75.132 hadoop1 hadoop1 192.168.75.133 hadoop3 hadoop3 对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。我是将namenode和jobtracker部署在hadoop1上,hadoop2, hadoop3作为datanode和tasktracker。当然你也可以将namenode,datanode,jobtracker,tasktracker全部部署在一台机器上。

2.目录结构

由于Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户。

addgroup hadoop adduser --ingroup hadoop hadoop 三台机器上是这样的:都有一个hadoop的帐户,主目录是/home/hadoop。

下载hadoop:

wget http://mirror.bjtu.edu.cn/apache/hadoop/core/stable/hadoop-0.20.203.0rc1.tar.gz 解压:[hadoop@ hadoop1:~]$tar -zxvf hadoop-0.21.0.tar.gz Hadoop部署目录结构如下:/home/hadoop/hadoop0.21.0,所有的hadoop版本放在这个目录中。

将hadoop0.21.0压缩包解压至hadoop0.21.0中,为了方便以后升级,建议建立一个链接指向要使用的hadoop版本,不妨设为hadoop,

[hadoop@ hadoop1:~]$ln -s hadoop-0.21.0 hadoop 这样一来,所有的配置文件都在/home/hadoop/hadoop/conf/目录中,所有执行程序都在/home/hadoop/hadoop/bin目录中。但是由于上述目录中hadoop的配置文件和hadoop的安装目录是放在一起的,这样一旦日后升级hadoop版本的时候所有的配置文件都会被覆盖,因此建议将配置文件与安装目录分离,一种比较好的方法就是建立一个存放配置文件的目录,/home/hadoop/hadoop/hadoop-config,然后将/home/hadoop/hadoop/conf/目录中的masters,slaves,hadoop-env.sh三个文件拷贝到hadoop-config目录中,并指定环境变量$HADOOP_CONF_DIR指向该目录。环境变量在/home/hadoop/.bashrc和/etc/profile中设定。

如:

HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-config export HADOOP_CONF_DIR 即:

cd /home/hadoop/hadoop mkdir hadoop-config cp conf/masters hadoop-config/ cp conf/slaves hadoop-config/ cp conf/hadoop-env.sh hadoop-config/ sudo vi /etc/profile HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-config export HADOOP_CONF_DIR vi /home/hadoop/.bashrc HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-config export HADOOP_CONF_DIR 综上所述,为了方便以后升级版本,我们需要做到配置文件与安装目录分离,并通过设定一个指向我们要使用的版本的hadoop的链接,这样可以减少我们对配置文件的维护。

3.SSH设置

在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

首先要保证每台机器上都装了SSH服务器,且都正常启动。实际中我们用的都是OpenSSH,这是SSH协议的一个免费开源实现。

apt-get install h 以本文中的3台机器为例,现在hadoop1是主节点,它需要主动发起SSH连接到hadoop2,对于SSH服务来说,hadoop1就是SSH客户端,而hadoop2, hadoop3则是SSH服务端,因此在hadoop2,hadoop3上需要确定hd服务已经启动。简单的说,在hadoop1上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到hadoop2上,这样,比如当hadoop1向hadoop2发起h连接的时候,hadoop2上就会生成一个随机数并用hadoop1的公钥对这个随机数进行加密,并发送给hadoop1,hadoop1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回hadoop2,hadoop2确认解密的数无误后就允许hadoop1进行连接了。这就完成了一次公钥认证过程。

对于本文中的3台机器,首先在hadoop1上生成密钥对:

[hapoop@hadoop1:~]$h-keygen -t dsa –P ‘’ –f ~/.h/id_dsa 这个命令将为hadoop1上的用户hadoop生成其密钥对。生成的密钥对id_rsa,id_rsa.pub,在/home/hadoop/.h目录下。

[hapoop@hadoop1:.h]$cat ~/.h/id_dsa.pub >> ~/.h/authorized_keys 然后将id_rsa.pub的内容复制/home/hadoop/.h/authorized_keys文件中。

对于hadoop2:[hapoop @ hadoop2:~]$mkdir .h 对于hadoop3:[hapoop @ hadoop3:~]$mkdir .h [hapoop @ hapoop1:.h]$scp authorized_keys hapoop2:/home/hapoop/.h/ [hapoop @ hapoop1:.h]$scp authorized_keys hapoop3:/home/hapoop/.h/

此处的scp就是通过h进行远程copy,此处需要输入远程主机的密码,即hadoop2,hadoop3机器上hadoop帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上。

[hadoop@hadoop2:.h]$chmod 640 authorized_keys [hadoop@hadoop3:.h]$chmod 640 authorized_keys

这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。

[hadoop@ hadoop2:.h] $ls -la

drwx------ 2 hadoop hadoop.

drwx------ 3 hadoop hadoop..

-rw-r--r-- 1 hadoop hadoop authorized_keys

注意每个机器上的.h目录的ls -la都应该和上面是一样的

接着,在3台机器上都需要对hd服务进行配置,修改文件/etc/h/hd_config。

vi /etc/h/hd_config #去除密码认证

PawordAuthentication no

(?如果这样,putty就不能登陆Linux了,去掉) AuthorizedKeysFile .h/authorized_keys 至此各个机器上的SSH配置已经完成,可以测试一下了,比如hadoop1向hadoop2发起h连接。

[hadoop@hadoop1:~]$h hadoop2 如果h配置好了,就会出现以下提示信息 The authenticity of host [hadoop2] can\'t be established.Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.Are you sure you want to continue connecting (yes/no)? OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.h/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。

然后你会发现不需要输入密码就可以建立h连接了,恭喜你,配置成功了,不过,别忘了测试本机h hadoop1。

(应该是只设置hadoop1对hadoop2发送h连接和hadoop1对hadoop3发送h连接,下面的需要配置吗?) 同样,hadoop1对hadoop3发起h连接,再在hadoop3发起对hadoop1的连接。这里不在赘述。

4.Hadoop环境变量

在/home/hadoop/hadoop/hadoop-config目录下的hadoop-env.sh中设置Hadoop需要的环境变量,其中JAVA_HOME是必须设定的变量。HADOOP_HOME变量可以设定也可以不设定,如果不设定,HADOOP_HOME默认的是bin目录的父目录,即本文中的/home/hadoop/hadoop。我的是这样设置的: export HADOOP_HOME=/home/hadoop/hadoop 这一句话export JAVA_HOME=/usr/java/jdk1.6.0_20改成: export JAVA_HOME=/usr/lib/jvm/java-6-openjdk 5.Hadoop配置文件

修改slaves文件

如前所述,在hadoop1(NameNode)的hadoop-config/目录下,打开slaves文件,该文件用来指定所有的DataNode,一行指定一个主机名。即本文中的hadoop

2、hadoop3,因此slaves文件看起来应该是这样的:

括号?????? 即hadoop2和192.168.75.131二者写一个就行 hadoop2(192.168.75.131) hadoop3(192.168.75.133) 修改masters文件

打开masters文件,该文件用来指定NameNode,内容如下: hadoop1(192.168.75.132)

在hadoop的安装目录分别找到core-default.xml,hdfs-default.xml,mapred-default.xml三个文件,然后copy到hadoop-config/目录下,这三个文件包含Hadoop的所有配置项,然后把这个分别改名为core-site.xml,hdfs-site.xml,mapred-site.xml,我们根据需要修改如下:(注意:下面的配置文件中不要有中文或中文的符号,否则报错) 修改core-site.xml core-site.xml的修改项如下:

hadoop.tmp.dir

/home/hadoop/hadoop/tmp

fs.defaultFS

hdfs://(master IP):9000 修改hdfs-site.xml 这里不需要修改此文件。 修改mapred-site.xml

mapreduce.jobtracker.addre

(master IP):9001

NameNode 注意:不同版本的变量名是不一样的啊~~~~~~~~~~~~ 6.部署Hadoop 前面讲的这么多Hadoop的环境变量和配置文件都是在hadoop1这台机器上的,现在需要将hadoop部署到其他的机器上,保证目录结构一致。

[hadoop@hadoop1:~]$scp -r /home/hadoop/hadoop hadoop2:/home/hadoop/ [hadoop@hadoop1:~]$scp -r /home/hadoop/hadoop hadoop3:/home/hadoop/

至此,可以说,Hadoop已经在各个机器上部署完毕了,下面就让我们开始启动Hadoop吧。

7.启动Hadoop 启动之前,我们先要格式化namenode,先进入~/hadoop/目录,执行下面的命令:

[hadoop@hadoop1 hadoop]$bin/hadoop namenode –format 不出意外,应该会提示格式化成功。如果不成功,就去hadoop/logs/目录下去查看日志文件。

下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。

* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack * stop-all.sh 停止所有的Hadoop * start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack * stop-mapred.sh 停止Map/Reduce守护

* start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode * stop-dfs.sh 停止DFS守护

在这里,简单启动所有守护:

[hadoop@hadoop1:hadoop]$bin/start-all.sh 同样,如果要停止hadoop,则

[hadoop@hadoop1:hadoop]$bin/stop-all.sh 8.HDFS操作

运行bin/目录的hadoop命令,可以查看Haoop所有支持的操作及其用法,这里以几个简单的操作为例。建立目录:

[hadoop@hadoop1 hadoop]$bin/hadoop dfs -mkdir testdir 在HDFS中建立一个名为testdir的目录,复制文件:

[hadoop@hadoop1 hadoop]$bin/hadoop dfs -put /home/large.zip testfile.zip 把本地文件large.zip拷贝到HDFS的根目录/user/hadoop/下,文件名为testfile.zip,查看现有文件:

[hadoop@hadoop1 hadoop]$bin/hadoop dfs -ls 1 多机模式部署

一、Jdk安装 命令:

sudo apt-get update sudo apt-get install openjdk-6-jdk 目录:/usr/lib/jvm/java-6-openjdk 配置环境变量:

sudo gedit /etc/environment 在其中添加如下两行:

CLASSPATH=./:/usr/lib/jvm/java-6-openjdk/lib JAVA_HOME=/usr/lib/jvm/java-6-openjdk PATH添加::/usr/lib/jvm/java-6-openjdk

二、新增hadoop用户

命令:sudo addgroup hadoop sudo adduser --ingroup hadoop hadoop sudo gedit etc/sudoers 添加配置:

在root ALL=(ALL) ALL后 hadoop ALL=(ALL) ALL使hadoop用户具有root权限 (id:查看用户)

三、h配置

用hadoop账户进行登录。

安装openh-server:sudo apt-get install openh-server 建立SSH KEY:h-keygen -t rsa -P \"\" 启用SSH KEY:cat $HOME/.h/id_rsa.pub >> $HOME/.h/authorized_keys sudo /etc/init.d/h reload 验证SSH的配置:h localhost

四、安装hadoop并更改用户所有权

wget http://mirror.bjtu.edu.cn/apache/hadoop/core/stable/hadoop-0.20.203.0rc1.tar.gz 我们采用的Hadoop版本是最新的Hadoop-0.20.2,可到Apache基金会官方主页下载http://www.daodoc.com/dyn/closer.cgi/hadoop/core,然后使用tar或直接解压到/home/hadoop下,解压后得到一个hadoop-0.20.2的一个文件夹。

安装目录:/usr/local/hadoop

更改所有权:chown -R hadoop:hadoop hadoop

五、配置hadoop (1)配置$HADOOP_HOME/conf/hadoop-env.sh 切换到Hadoop的安装路径找到hadoop-0.20.2下的conf/hadoop-env.sh文件 将:# export JAVA_HOME=/usr/lib/j2sdk1.5-sun 改为:export JAVA_HOME=/usr/lib/jvm/java-6-openjdk (2) 配置$HADOOP_HOME/conf/core-site.xml 切换到Hadoop的安装路径找到hadoop-0.20.2下的conf/core-site.xml文件

fs.default.name

hdfs://localhost:9000

hadoop.tmp.dir

/home/hadoop/tmp -- 配置第二名称节点

fs.checkpoint.dir

{}/home/hadoop/secondname -- 设置回收站保留时间

fs.trash.interval

10080

Number of minutes between trash checkpoints.If zero, the trash feature is disabled

(3) 配置$HADOOP_HOME/conf/hdfs-site.xml 切换到Hadoop的安装路径找到hadoop-0.20.2下的conf/hdfs-site.xml文件内容如下: dfs.name.dir /home/hadoop/name dfs.data.dir /home/hadoop/data dfs.replication 2

-- NameNode HTTP状态监视地址 dfs.http.addre localhost:50070

-- SecondaryNameNode HTTP状态监视地址 dfs.secondary.http.addre localhost2:50070 (4) 配置$HADOOP_HOME/conf/mapred-site.xml 切换到hadoop的安装路径找到hadoop-0.20.2下的conf/mapred-site.xml文件内容如下: mapred.local.dir /home/hadoop/temp mapred.job.tracker localhost:9001

-- 每个job的map任务数 mapred.map.tasks 7

-- 每一个tasktracker同时运行的map任务数为2 mapred.tasktracker.map.tasks.maximum 2

-- 每一个tasktracker同时运行的reduce任务数为4 mapred.tasktracker.reduce.tasks.maximum 4 -- jvm虚拟机最大内存

mapred.child.java.opts

-XX:-UseGCOverheadLimit

六、格式化namenode 命令:bin/hadoop namenode -format

七、启动及验证

命令:./bin/start-all.sh 验证方法1:jps 验证方法2:bin/hadoop dfsadmin -report

八:运行Wordcount 1.准备工作

准备两个文本文件并拷贝到dfs里,具体命令操作如下: $ echo \"hello hadoop world.\" > /tmp/test_file1.txt $ echo \"hello world hadoop.i\'m ceshiuser.\" > /tmp/test_file2.txt $ bin/hadoop dfs -mkdir test-in $ bin/hadoop dfs -copyFromLocal /tmp/test*.txt test-in --$ bin/hadoop dfs -put /tmp/test*.txt test-in --$ bin/hadoop dfs -copyToLocal test-out /tmp/test*.txt --$ bin/hadoop dfs -get test-out /tmp/test*.txt $ bin/hadoop dfs -ls test-in 2.运行

$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount test-in test-out --% ln -s /home/hadoop/junyu-hadoop/hadoop-iflytek-tempcount.jar tempcount 3.查看结果

$ bin/hadoop dfs -ls test-out $ bin/hadoop dfs -cat test-out/part-r-00000 分布式部署:

一,修改/etc/hosts文件: 192.168.71.89 node0 192.168.77.213 node1

二,h配置

(1)使用scp 命令把生成的公钥传给其它服务器,并保存成不同的名字,如192.168.71.89 -> 192.168.77.213 ,并且保存为89_id_rsa.pub 的时候命令如下:

scp id_rsa.pub hadoop@192.168.77.213:/home/hadoop/.h/89_id_rsa.pub (2) 登录192.168.77.213 ,可以远程登录:h hadoop@192.168.77.213,进入当前用户默认目录下的.h 目录:cd ~/.h

(3) 把公钥内容添加到登录认证文件中:cat 89_id_rsa.pub >> authorized_keys

(4) 登录到192.168.71.89 主机,使用h hadoop@192.168.77.213 进行连接213 主机,这时候会出现输入yes/no? 的提示,输入yes。

三,配置hadoop文件。目录:/usr/local/hadoop/conf/ conf/masters :192.168.71.89 conf/slaves :192.168.77.213

修改 core-site.xml 文件

fs.default.name

hdfs://192.168.71.89:9000/

修改 hdfs-site.xml 文件

1:dfs.http.addre

192.168.71.89:50070 2:dfs.secondary.http.addre

192.168.71.213:50070

修改mapred-site.xml文件

mapred.job.tracker

192.168.71.89:9001

县医院节点部署会议

中小企业虚拟化部署指南

部署服务器虚拟化的两大障碍

精心部署 多措并举

多举措安排部署措施

T台走秀300多曲

全部署多举措保障春节旅游安全

北京地铁项目部多措并举保障施工节点工期

江西省部署多警联勤“清剿火患”行动

省局多措并举全面部署夏收夏种气象服务工作

在三台虚拟机上部署多节点Hadoop
《在三台虚拟机上部署多节点Hadoop.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
热门文章
    主题推荐
      点击下载本文文档