Hadoop集配置(最全⾯总结)
通常,集⾥的⼀台机器被指定为 NameNode,另⼀台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves\
1 先决条件
1. 确保在你集中的每个节点上都安装了所有软件:sun-JDK  ,ssh,Hadoop
2. Java TM1.5.x,必须安装,建议选择Sun公司发⾏的Java版本。
3. ssh 必须安装并且保证 sshd⼀直运⾏,以便⽤Hadoop 脚本管理远端Hadoop守护进程。
2 实验环境搭建
2.1  准备⼯作
操作系统:Ubuntu
部署:Vmvare
在vmvare安装好⼀台Ubuntu虚拟机后,可以导出或者克隆出另外两台虚拟机。
说明:
保证虚拟机的ip和主机的ip在同⼀个ip段,这样⼏个虚拟机和主机之间可以相互通信。
为了保证虚拟机的ip和主机的ip在同⼀个ip段,虚拟机连接设置为桥连。
准备机器:⼀台master,若⼲台slave,配置每台机器的/etc/hosts保证各台机器之间通过机器名可以互访,例如:
10.64.56.76 node1(master)
10.64.56.77 node2 (slave1)
10.64.56.78 node3 (slave2)
主机信息:
机器名  IP地址作⽤
Node110.64.56.76NameNode、JobTracker
Node210.64.56.77DataNode、TaskTracker
Node310.64.56.78DataNode、TaskTracker
为保证环境⼀致先安装好JDK和ssh:
2.2 安装JDK
#安装JDK
$ sudo apt-get install sun-java6-jdk1.2.3
这个安装,java执⾏⽂件⾃动添加到/usr/bin/⽬录。
验证 shell命令:java -version 看是否与你的版本号⼀致。
2.3下载、创建⽤户
useraddhadoop cd  /home/hadoop
在所有的机器上都建⽴相同的⽬录,也可以就建⽴相同的⽤户,最好是以该⽤户的home路径来做hadoop的安装路径。
例如在所有的机器上的安装路径都是:/home/hadoop/hadoop-0.20.203,这个不需要mkdir,在/home/hadoop/下解压hadoop包的时候,会⾃动⽣成)
(当然可以安装/usr/local/⽬录下,例如/usr/local/hadoop-0.20.203/
chown -R hadoop /usr/local/hadoop-0.20.203/
chgrp -R hadoop  /usr/local/hadoop-0.20.203/
(最好不要使⽤root安装,因为不推荐各个机器之间使⽤root访问 )
2.4 安装ssh和配置
1)安装:sudo apt-get install ssh
这个安装完后,可以直接使⽤ssh命令了。
执⾏$ netstat  -nat    查看22端⼝是否开启了。
测试:ssh localhost。
输⼊当前⽤户的密码,回车就ok了。说明安装成功,同时ssh登录需要密码。
(这种默认安装⽅式完后,默认配置⽂件是在/etc/ssh/⽬录下。sshd配置⽂件是:/etc/ssh/sshd_config):
注意:在所有机⼦都需要安装ssh。
2)配置:
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停⽌各个datanode上的各种守护进程的,这就须要在节点之间执⾏指令的时候是不须要输⼊密码的形式,故我们须要配置SSH运⽤⽆密码公钥认证的形式。
以本⽂中的三台机器为例,现在node1是主节点,他须要连接node2和node3。须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。
( 说明:hadoop@hadoop~]$ssh-keygen  -t  rsa
这个命令将为hadoop上的⽤户hadoop⽣成其密钥对,询问其保存路径时直接回车采⽤默认路径,当提⽰要为⽣成的密钥输⼊passphrase的时候,直接回车,也就是将其设定为空密码。⽣成的密钥对id_rsa,
id_rsa.pub,默认存储在/home/hadoop/.ssh⽬录下然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys⽂件中,如果机器上已经有authorized_keys这个⽂件了,就在⽂件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个⽂件,直接复制过去就⾏.)
3) ⾸先设置namenode的ssh为⽆需密码的、⾃动登录。
切换到hadoop⽤户( 保证⽤户hadoop可以⽆需密码登录,因为我们后⾯安装的hadoop属主是hadoop⽤户。)
$ su hadoop
cd /home/hadoop
$ ssh-keygen -t rsa
然后⼀直按回车
完成后,在home跟⽬录下会产⽣隐藏⽂件夹.ssh
$ cd .ssh
之后ls 查看⽂件
cp id_rsa.pub  authorized_keys
测试:
$ssh localhost
或者:
$ ssh node1
第⼀次ssh会有提⽰信息:
The authenticity of host ‘node1 (10.64.56.76)’ can’t be established.
RSA key fingerprint is 03:e0:30:cb:6e:13:a8:70:c9:7e:cf:ff:33:2a:67:30.
Are you sure you want to continue connecting (yes/no)?
输⼊ yes 来继续。这会把该服务器添加到你的已知主机的列表中
发现链接成功,并且⽆需密码。
4 ) 复制authorized_keys到node2 和node3 上
为了保证node1可以⽆需密码⾃动登录到node2和node3,先在node2和node3上执⾏
$ su hadoop
cd /home/hadoop
$ ssh-keygen -t rsa
⼀路按回车.
然后回到node1,复制authorized_keys到node2 和node3
[hadoop@hadoop .ssh]$ scp authorized_keys  node2:/home/hadoop/.ssh/
[hadoop@hadoop .ssh]$ scp authorized_keys  node3:/home/hadoop/.ssh/
这⾥会提⽰输⼊密码,输⼊hadoop账号密码就可以了。
改动你的 authorized_keys ⽂件的许可权限
[hadoop@hadoop .ssh]$chmod 644 authorized_keys
测试:ssh node2或者ssh node3(第⼀次需要输⼊yes)。
如果不须要输⼊密码则配置成功,如果还须要请检查上⾯的配置能不能正确。
2.5 安装Hadoop
#切换为hadoop⽤户
su hadoop
下载安装包后,直接解压安装即可:
$ tar -zxvfhadoop-0.20.203.
1 ) 安装Hadoop集通常要将安装软件解压到集内的所有机器上。并且安装路径要⼀致,如果我们⽤HADOOP_HOME指代安装的根路径,通常,集⾥的所有机器的
HADOOP_HOME路径相同。
2 )  如果集内机器的环境完全⼀样,可以在⼀台机器上配置好,然后把配置好的软件即hadoop-0.20.203整个⽂件夹拷贝到其他机器的相同位置即可。
3 )  可以将Master上的Hadoop通过scp拷贝到每⼀个Slave相同的⽬录下,同时根据每⼀个Slave的Java_HOME 的不同修改其hadoop-env.sh 。
4)  为了⽅便,使⽤hadoop命令或者start-all.sh等命令,修改Master上/etc/profile 新增以下内容:
export HADOOP_HOME=/home/hadoop/hadoop-0.20.203
exportPATH=PATH:HADOOP_HOME/bin
修改完毕后,执⾏source /etc/profile 来使其⽣效。
6)配置conf/hadoop-env.sh⽂件
配置conf/hadoop-env.sh⽂件
#添加
export JAVA_HOME=/usr/lib/jvm/java-6-sun/
这⾥修改为你的jdk的安装位置。
测试hadoop安装:
Bin/hadoop jar hadoop-0.20.2-examples.jarwordcount  conf/  /tmp/out
3. 集配置(所有节点相同)
3.1配置⽂件:l
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node1:49000</value>
</property>
<property>
<name&p.dir</name>
<value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>
1)fs.default.name是NameNode的URI。hdfs://主机名:端⼝/
2)p.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此⽂件中的tmp⽬录即可。不过如果删除了NameNode机器的此⽬录,那么就需要重新执⾏NameNode格式化的命令。
3.2配置⽂件:l
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>acker</name>
<value>node1:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>
1)acker是JobTracker的主机(或者IP)和端⼝。主机:端⼝。
3.3配置⽂件:l
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name1, /home/hadoop/name2</value> #hadoop的name⽬录路径
<description>  </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data1, /home/hadoop/data2</value>
<description> </description>
</property>
<property>
<name&plication</name>
<!-- 我们的集⼜两个结点,所以rep两份 -->
<value>2</vaue>
</property>
</configuration>
1)  dfs.name.dir是NameNode持久存储名字空间及事务⽇志的本地⽂件系统路径。当这个值是⼀个逗号分割的⽬录列表时,nametable数据将会被复制到所有⽬录中做冗余备份。
2)  dfs.data.dir是DataNode存放块数据的本地⽂件系统路径,逗号分割的列表。当这个值是逗号分割的⽬录列表时,数据将被存储在所有⽬录下,通常分布在不同设备上。
3)plication是数据需要备份的数量,默认是3,如果此数⼤于集的机器数会出错。
注意:此处的name1、name2、data1、data2⽬录不能预先创建,hadoop格式化时会⾃动创建,如果预先创建反⽽会有问题。
3.4配置masters和slaves主从结点
配置conf/masters和conf/slaves来设置主从结点,注意最好使⽤主机名,并且保证机器之间通过主机名可以互相访问,每个主机名⼀⾏。
vi masters:
输⼊:
node1
vi slaves:
输⼊:
node2
node3
配置结束,把配置好的hadoop⽂件夹拷贝到其他集的机器中,并且保证上⾯的配置对于其他机器⽽⾔正确,例如:如果其他机器的Java 安装路径不⼀样,要修改conf/hadoop-env.sh
$ scp -r /home/hadoop/hadoop-0.20.203 root@node2: /home/hadoop/
4 hadoop启动
4.1 格式化⼀个新的分布式⽂件系统
先格式化⼀个新的分布式⽂件系统
cdhadoop−0.20.203 bin/hadoop namenode -format
成功情况下系统输出:
查看输出保证分布式⽂件系统格式化成功
执⾏完后可以到master机器上看到/home/hadoop//name1和/home/hadoop//name2两个⽬录。在主节点master上⾯启动hadoop,主节点会启动所有从节点的hadoop。
4.2 启动所有节点
启动⽅式1:
$ bin/start-all.sh (同时启动HDFS和Map/Reduce)
系统输出:
starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-ubuntu.outhadoop分布式集搭建
node2: starting datanode, loggingto /usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out
node3: starting datanode, loggingto /usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out
node1: starting secondarynamenode,logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-ubuntu.out
starting jobtracker, logging to/usr/local/hadoop/logs/hadoop-hadoop-jobtracker-ubuntu.out
node2: starting tasktracker,logging to /usr/local/hadoop/logs/hadoop-hadoop-tasktracker-ubuntu.out

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。