hadoop1.1.2分布式安装(完备版)



  

 

0 简介:

一共5个节点,hadoop0(namenode,jobtracker), hadoop1(secondnamenode),

剩下hadoop2,hadoop3,hadoop4为datanode

 

节点环境:

a) VMware8

b) CentOS-5.8-i386

c) win7-64位-旗舰 6G内存

d) hadoop-1.1.2.tar

e) jdk-6u24-linux-i586.bin

f)SSHSecureShellClient-3.2.9

g) 如下操作都是用root用户

h) 每台虚拟机网络连接均采用桥接方式,内存为512M

 

1 安装hadoop0节点虚拟机,后设置静态IP

 

设置静态IP操作如下:

 

1 进入目录/etc/sysconfig/network-scripts/
2 ls查看 找文件名为ifcfg-ethX的文件, X表示一个数字,通常是0或者2 eg: ifcfg-eth0
3 vi ifcfg-eth0  修改里面信息如下:
[root@localhost network-scripts]# more ifcfg-eth0 
DEVICE=eth0 
BOOTPROTO=static
HWADDR=00:0C:29:B6:55:64
NETMASK=255.255.255.0
IPADDR=192.168.1.110
GATEWAY=192.168.1.1

				
说明如下:
a)DEVICE=eth0 中名称一般和 ifcfg-eth0的-后面名称对应,可以通过# ifconfig -a查看第一个单词名称即为设备名称
BOOTPROTO=static 表示是静态地址


b) HWADDR=00:0C:29:B6:55:64 表示当前机器MAC地址,如通过克隆创建别的节点,需要修改为当前节点MAC地址,
否则修改IP后执行service network restart 重启网卡设置时,
报错为Bringing up interface eth0:  Device static does not seem to be present, delaying initialization.

查询当前节点MAC地址操作如下:
# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:B6:55:64     
找到HWaddr对应的数据 然后粘贴到	ifcfg-eth0即可		

c) 如下即是真正设置项
NETMASK=255.255.255.0
IPADDR=192.168.1.110
GATEWAY=192.168.1.1

4 修改好后,保存vim
5 执行命令service network restart重启网卡设置
6 执行命令ifconfig查看配置结果是否正确

 

2 hadoop0设置hostname,ip和机器名映射,关闭防火墙

 

2.1 设置hostname
(1)使用vi编辑/etc/sysconfig/network
   把HOSTNAME的值改为hadoop0,保存退出。
   HOSTNAME=hadoop0
(2)执行hostname hadoop0,在当前环境中立即生效   
(3)执行命令hostname查看设置结果
[root@localhost ~]# hostname hadoop0
[root@localhost ~]# hostname
hadoop0

2.2 绑定ip与hostname
   编辑文件/etc/hosts,增加ip与hostname的映射信息
   192.168.1.110   hadoop0

2.3 关闭防火墙
(1) 执行命令service iptables stop关闭防火墙
(2)执行命令service iptables status查看防火墙是否正在运行 
[root@localhost ~]# service iptables status
Firewall is stopped.

2.4 关闭防火墙的自动运行
(1) 执行命令chkconfig iptables off 
验证如下:
[root@localhost ~]# chkconfig --list | grep iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

后重启机器,reboot后在查看命令行,
[root@hadoop0 ~]#   发现机器名已经修改完毕

 

 3 安装JDK:

 

通过ssh工具上传jdk-6u24-linux-i586.bin到 usr/local/下

执行命令 

    (1)cd /usr/local (将原来目录内文件删除)
    (2)chmod u+x jdk-6u24-linux-i586.bin (给用户针对jdk-6u24-xxx文件增加执行权限)
    (3)./jdk-6u24-linux-i586.bin (解压文件)
    (4)mv jdk-1.6.0_24  jdk1.6 (文件重命名) 
    (5)vi /etc/profile 空白处增加内容如下:
        export JAVA_HOME=/usr/local/jdk1.6
        export PATH=.:$JAVA_HOME/bin:$PATH
    (6)source /etc/profile (刷新环境变量 立即生效)
    #  java -version 
	java version "1.6.0_24"
	Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
	Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)

 

  4 通过vmware工具 完成克隆hadoop0机器,克隆出hadoop1,hadoop2,hadoop, hadoop4

  

    在vmware工具上,在hadoop0节点上右键/manage/clone/下一步/出现下图,

  
hadoop1.1.2分布式安装(完备版)_第1张图片

 

选择好克隆后的节点名称和磁盘存放位置即可,依次克隆出节点hadoop1,hadoop2,hadoop, hadoop4后,按照上面1,2,3的步骤,配置好新节点的 IP,机器别名,IP和别名映射,防火墙

(因为克隆,所以JDK已经安装好)

 

5   配置hadoop0到其余4个节点ssh免密码登陆

 

a) hadoop集群在启动时,主节点需要通过ssh登陆到从节点启动进程从而启动从节点,因此仅仅需要

将主节点的 公钥文件拷贝到其余节点即可,因为是内网集群,设置免密码登陆,关闭防火墙更快速高效的实现集群通讯

 

b)

a) hadoop0中增加其余节点机器别名配置,增加后如下
[root@hadoop0 ~]# cat /etc/hosts 
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.1.110   hadoop0
192.168.1.111   hadoop1
192.168.1.112   hadoop2
192.168.1.113   hadoop3
192.168.1.114   hadoop4

b) 在节点hadoop0,1,2,3,4中,通过命令ssh-keygen -t rsa 不断回车,生成rsa密钥对 
后在hadoop0中,通过如下命令将hadoop0的公钥文件拷贝到其余4台节点中
[root@hadoop0 .ssh]# ssh-copy-id -i hadoop1,2,3,4
执行完后去hadoop1,2,3,4查看 /root/.ssh/ 会生成 authorized_keys ,
more  authorized_keys 会发现 root@hadoop0进来了,代码如下:
[root@hadoop1 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@hadoop1 .ssh]# more authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7IdyDdRLDtW//xhFJK7BrpGlyRKhrtLxw+4q6YZOk6yT
gR18sSSjiOfMFjV6KGJy0PHpVkOc3JJ7uYRVGaojZW6+sVD65rlOzwHKbxXOcGKggLU13SwGb3/jpbxf
ZccHr6KeRPMmV80B89A1YNed4eHhGJzJidC6lxaVC4U9Kt6FB9cqXXNbjqe4xbpMyJVi+Q/FqVnl9LLj
QmLg1vot2m4aIMDd2bA5qnu1LOHF7PnnmxwjSUbB/McWc5QVxbKR2mrqh2wMeW1KEPMUuRSPGXWzwMBm
ivjgF1D3qMxmsW3M5YtqQeXSV7/KkBS8uR72ka8+OtPFcIwDRQGJ49Tx/w== root@hadoop0


c) hadoop0中,尝试 ssh hadoop1,2,3,4 确认ssh无秘钥通过

 

c) 补充遗漏的两项:

1) 确保ssh hadoop0自身通过,操作方式如下: 
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

2) 将hadoop0的host拷贝到其余节点(内容如下)
[root@hadoop0 logs]# more /etc/hosts
::1             localhost6.localdomain6 localhost6
192.168.1.110   hadoop0
192.168.1.111   hadoop1
192.168.1.112   hadoop2
192.168.1.113   hadoop3
192.168.1.114   hadoop4
拷贝命令如下:
[root@hadoop0 logs]# scp /etc/hosts hadoop1:/etc/hosts
hosts                                                                      100%  307     0.3KB/s   00:00    
[root@hadoop0 logs]# scp /etc/hosts hadoop2:/etc/hosts
hosts                                                                      100%  307     0.3KB/s   00:00    
[root@hadoop0 logs]# scp /etc/hosts hadoop3:/etc/hosts
hosts                                                                      100%  307     0.3KB/s   00:00    
[root@hadoop0 logs]# scp /etc/hosts hadoop4:/etc/hosts
hosts    

 

 

 6 在hadoop0中安装HADOOP 并修改配置文件

 

a) 拷贝 hadoop文件到 /usr/local下
b) 解压缩安装,
    (1)tar -zxvf hadoop-1.1.2.tar.gz
    (2)mv hadoop-1.1.2 hadoop
    (3)vi /etc/profile 增加内容如下:
        export JAVA_HOME=/usr/local/jdk
        export HADOOP_HOME=/usr/local/hadoop
        export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
    (4)source /etc/profile
    (5)修改conf目录下的配置文件hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml  masters  slaves  修改后如下:

	hadoop-env.sh:
    export JAVA_HOME=/usr/local/jdk1.6
	
	
	core-site.xml:
	<configuration>
	<property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop0:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>  
	</configuration>
	
	hdfs-site.xml:
	<configuration>
	<property>
	  <name>dfs.http.address</name>
	  <value>0.0.0.0:50070</value>
	</property>
	<property>
			<name>dfs.replication</name>
			<value>3</value>
		</property>
		<property>
			<name>dfs.permissions</name>
			<value>false</value>
		</property>
	</configuration>

	mapred-site.xml
	<configuration>
	<property>
			<name>mapred.job.tracker</name>
			<value>hadoop0:9001</value>
		</property>
		<property>
	  <name>mapred.job.tracker.http.address</name>
	  <value>0.0.0.0:50030</value> 
	</property>  
	</configuration>
	
	conf/masters: 
	hadoop1

	conf/slaves:
	hadoop2
	hadoop3
	hadoop4

 

 

7 将hadoop0中的hadoop SCP到1,2,3,4

 

[root@hadoop0 local]# scp -r hadoop hadoop1:/usr/local/
[root@hadoop0 local]# scp -r hadoop hadoop2:/usr/local/
[root@hadoop0 local]# scp -r hadoop hadoop3:/usr/local/
[root@hadoop0 local]# scp -r hadoop hadoop4:/usr/local/

 

8 hadoop0中启动HADOOP集群

 

启动命令如下:
# hadoop namenode -format
# start-all.sh

查看
[root@hadoop0 hadoop]# jps
15913 NameNode
16090 JobTracker
16196 Jps


[root@hadoop1 conf]# jps
12765 Jps
12677 SecondaryNameNode

去别的节点可以到datanode的jps

 

 

9  如果启动失败,查看日志说明如下:

 

a) 查看日志, 
[root@hadoop0 logs]# ls
hadoop-root-jobtracker-hadoop0.log  hadoop-root-namenode-hadoop0.log  history
hadoop-root-jobtracker-hadoop0.out  hadoop-root-namenode-hadoop0.out

日志格式如下:
hadooop-当前用户-当前进程-主机名.log
hadooop-当前用户-当前进程-主机名.out ---> 临时文件,不存放数据

b) more hadoop-root-namenode-hadoop0.log 和 more hadoop-root-jobtracker-hadoop0.log 可以看到报错原因,
eg:  如果hadoop0没有ssh通自己,报错如下:
java.net.ConnectException: Call to hadoop0/192.168.1.110:9000 failed on connection exception: java.net.ConnectException: Connection refused

如果端口已经被占用了,通过如下方式来处理
查看进程详细 包括开启的人:  netstat -ant | grep 9000   
杀死已经被使用的端口: kill -9 9000

 

 10 如上集群如果NameNode和JobTracker不在一个节点上的做法:

1.搭建集群环境,NameNode和JobTracker不在一个节点上。
  假设NameNode在hadoop0上,JobTracker在hadoop1上。
1.1 NameNode所在节点是通过配置文件core-site.xml的fs.default.name的值体现的。
    值还是hdfs://hadoop0:9000
	 
	JobTracker所在节点是通过配置文件mapred-site.mlx的mapred.job.tracker的值体现的。
	值修改为http://hadoop1:9001
	
	
1.2 在hadoop0上执行命令hadoop-daemon.sh start namenode
    在hadoop1上执行命令hadoop-daemon.sh start jobtracker
	在hadoop1上执行命令hadoop-daemon.sh start secondarynamenode
	在hadoop2上执行命令hadoop-daemons.sh start datanode
	在hadoop2上执行命令hadoop-daemons.sh start tasktracker  // 这样就会启动多个datanode 去slaves文件中找
	(前提是 hadoop2,3,4能ssh互通, 此时到是建议每个节点都生成各自authorized-keys后,通过ssh-copy-id -i确定所有节点都互通 
	  具体操作 见 文章 hadoop1.1.2分布式安装(简单借鉴 建议看本系列之完备版) )
	  
1.3	关闭集群时,按照上述顺序倒过来,并将start 修改成stop 即可

 

 

11 部署成功后,通过http 查看datanode节点确认是否安装成功:

 

a) 安装成功访问datanode节点界面如下:


hadoop1.1.2分布式安装(完备版)_第2张图片
 

b)  通过 hadoop shell 上传一文件后([root@hadoop0 hadoop]# hadoop fs -ls hdfs://hadoop0:9000/ )

   

看逻辑结构显示(显示只有一份)和物理存储显示(显示为三份)

 


hadoop1.1.2分布式安装(完备版)_第3张图片
 

 

通过访问地址http://hadoop0:50070/dfshealth.jsp 点击Browse the filesystem 后,可以看到上传文件存储物理位置:


hadoop1.1.2分布式安装(完备版)_第4张图片
 


hadoop1.1.2分布式安装(完备版)_第5张图片
 

 

OK, 安装成功 文档结束。

你可能感兴趣的:(hadoop)