Hadoop集群搭建
目录结构
1. Centos安装之后基本配置
2. 安装和配置JDK
3. 集群网络环境介绍及快速部署
4. ssh免密码登录
5. 规划系统目录.
6. Hadoop集群配置
7. Hadoop集群启动
root登陆
$ su -
$ ntpdate cn.pool.ntp.org
$ chkconfig iptables off (永久生效)
$ service iptables stop (临时有效)
$vim /etc/selinux/config
$ hostname
root用户登陆,修改命令如下
$ vim /etc/sysconfig/network
$ vim /etc/hosts
在windows端下载jdk1.7,然后使用scp或者ftp软件传到Centos系统中/opt/下
下载到的文件是:jdk-7u65-linux-x64.tar.gz
切换到opt目录下,解压jdk-7u65-linux-x64.tar.gz
$ cd /opt/
$ tar -zxvf jdk-7u65-linux-x64.tar.gz
重命名jdk1.7.0_65为jdk1.7
$ mv jdk1.7.0_65/ jdk1.7
root用户登陆,命令行中执行命令”vim /etc/profile”,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。
1
2
3
4
5
6
7
8
9
10
|
<
font
size
=
"3"
>#set java environment
export JAVA_HOME=/opt/jdk1.7
export JRE_HOME=/opt/jdk1.7/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
</
font
>
|
保存并退出,执行以下命令使配置生效
$ chmod +x /etc/profile
$ source /etc/profile
配置完毕,在命令行中使用命令“java -version”可以判断是否成功。在hadoop用户下测试java -version,一样成功。
所有节点用hadoop用户登陆,并执行以下命令:
$ ssh-keygen -t rsa
这将在/home/hadoop/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
$ su hadoop
$ ssh-keygen -t rsa
Generating 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.
这将在/home/hd_space/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
$ cd /home/hadoop/.ssh/
$ cat id_rsa.pub >> authorized_keys
$ chmod 644 authorized_keys
使用SSH协议将namenode的公钥信息authorized_keys复制到所有DataNode的.ssh目录下。
$ scp authorized_keys data节点ip地址:/home/hd_space/.ssh
$ scp authorized_keys hadoop@datanode1:/home/hadoop/.ssh/authorized_keys
$ scp authorized_keys hadoop@datanode2:/home/hadoop/.ssh/authorized_keys
配置完毕,在namenode上执行“ssh NameNode,所有数据节点”命令,因为ssh执行一次之后将不会再询问。在各个DataNode上也进行“ssh NameNode,所有数据节点”命令。
安装目录和数据目录分开,且数据目录和hadoop的用户目录分开,如果需要重新格式化,则可以直接删除所有的数据目录,然后重建数据目录。
如果数据目录和安装目录或者用户目录放置在一起,则对数据目录操作时,存在误删除程序或者用户文件的风险。
完整路径 |
说明 |
/opt/hadoop |
hadoop的程序安装主目录 |
/home/hadoop/hd_space/tmp |
临时目录 |
/home/hadoop/hd_space/hdfs/name |
namenode上存储hdfs名字空间元数据 |
/home/hadoop/hd_space/hdfs/data |
datanode上数据块的物理存储位置 |
/home/hadoop/hd_space/mapred/local |
tasktracker上执行mapreduce程序时的本地目录 |
/home/hadoop/hd_space/mapred/system |
这个是hdfs中的目录,存储执行mr程序时的共享文件 |
在NameNode下,root用户
$ rm -rf /home/hd_space
$ mkdir -p /home/hadoop/hd_space/tmp
$ mkdir -p /home/hadoop/hd_space/dfs/name
$ mkdir -p /home/hadoop/hd_space/dfs/data
$ mkdir -p /home/hadoop/hd_space/mapred/local
$ mkdir -p /home/hadoop/hd_space/mapred/system
$ chown -R hadoop:hadoop /home/hadoop/hd_space/
修改目录/home/hadoop的拥有者(因为该目录用于安装hadoop,用户对其必须有rwx权限。)
$ chown -R hadoop:hadoop /home/hadoop
Hadoop用户登录。
下载hadoop-2.2.0(已编译好的64位的hadoop 2.2,可以加QQ群: 261039241,从群共享里下载),将其解压到/opt目录下.
1
2
3
4
5
6
7
8
9
10
|
<
font
size
=
"3"
>#set hadoop
export HADOOP_HOME=/opt/hadoop-2.2.0
export HADOOP_CONF_DIR=/opt/hadoop-2.2.0/etc/hadoop
export YARN_CONF_DIR=/opt/hadoop-2.2.0/etc/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
</
font
>
|
$ source /etc/profile
$ vim $HADOOP_CONF_DIR/hadoop-env.sh
加入:
export JAVA_HOME=/opt/jdk1.7
$ vim $HADOOP_CONF_DIR/yarn-env.sh
加入:
export JAVA_HOME=/opt/jdk1.7
$ vim $HADOOP_CONF_DIR/core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<
font
size
=
"3"
><
property
>
<
name
>fs.defaultFS</
name
>
<
value
>hdfs://namenode:9000</
value
>
</
property
>
<
property
>
<
name
>hadoop.tmp.dir</
name
>
<
value
>/home/hadoop/hd_space/tmp</
value
>
</
property
>
</
font
>
|
$ vim $HADOOP_CONF_DIR/hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<
font
size
=
"3"
><
configuration
>
<
property
>
<
name
>dfs.name.dir</
name
>
<
value
>/home/hadoop/hd_space/hdfs/name</
value
>
</
property
>
<
property
>
<
name
>dfs.data.dir</
name
>
<
value
>/home/hadoop/hd_space/hdfs/data</
value
>
</
property
>
<
property
>
<
name
>dfs.replication</
name
>
<
value
>3</
value
>
</
property
>
</
configuration
>
</
font
>
|
$ vim $HADOOP_CONF_DIR/mapred-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<
font
size
=
"3"
><?
xml
version
=
"1.0"
?>
<?
xml-stylesheet
type
=
"text/xsl"
href
=
"configuration.xsl"
?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<
configuration
>
<
property
>
<
name
>mapreduce.cluster.local.dir</
name
>
<
value
>/home/hadoop/hd_space/mapred/local</
value
>
</
property
>
<
property
>
<
name
>mapreduce.cluster.system.dir</
name
>
<
value
>/home/hadoop/hd_space/mapred/system</
value
>
</
property
>
<
property
>
<
name
>mapreduce.framework.name</
name
>
<
value
>yarn</
value
>
</
property
>
<
property
>
<
name
>mapreduce.jobhistory.address</
name
>
<
value
>namenode:10020</
value
>
</
property
>
<
property
>
<
name
>mapreduce.jobhistory.webapp.address</
name
>
<
value
> namenode:19888</
value
>
</
property
>
</
configuration
>
</
font
>
|
1
2
3
4
5
6
7
8
|
<
font
size
=
"3"
><
property
>
<
name
>dfs.namenode.secondary.http-address</
name
>
<
value
>namenode:9001</
value
>
</
property
>
</
font
>
|
删除localhost,加入所有datanode的主机名
datanode1 datanode2 |
6. 集群网络环境介绍及快速部署集群包含三个节点:1个namenode,2个datanode,节点之间局域网连接,可以相互ping通。 所有节点均是Centos 6.5 64位系统,防火墙均禁用,sshd服务均开启并设置为开机启动。 Ø 拷贝虚拟机文件夹关闭NameNode虚拟机,把NameNode文件夹,拷贝2份,并命名为DataNode1,,DataNode2。 Ø 设置虚拟机名称用VMware打开每个DateNode,设置其虚拟机的名字 打开操作系统,当弹出对话框时,选择“I copy it” Ø 修改hostname$ vim /etc/sysconfig/network 分别修改为datanode1、datanode2 Ø Centos克隆后网卡问题由于克隆原因,克隆出来的虚拟机默认连接eth1网卡,所以需要动手改为eth0 1)修改/etc/udev/rules.d/70-persistent-net.rules 拷贝eth1的硬件地址到eth0 删除eth1信息 2)配置/etc/sysconfig/network-scripts/ifcfg-eth0 将/etc/udev/rules.d/70-persistent-net.rules 中的ATTR地址拷贝到本文件的HWADDR中 DEVICE=”eth0″ BOOTPROTO=”static” HWADDR=”00:0C:29:91:42:2C” MTU=”1500″ NM_CONTROLLED=”yes” ONBOOT=”yes” IPADDR=192.168.152.101 NETMASK=255.255.255.0 GATEWAY=192.168.152.2 3)reboot |
$ hadoop namenode -format
—–因为配置了环境变量,此处不需要输入hadoop命令的全路径/hadoop/bin/hadoop
执行后的结果中会提示“dfs/namehas been successfully formatted”。否则格式化失败。
$ start-dfs.sh
$ start-yarn.sh
启动成功后,分别在namenode和datanode所在机器上使用jps 命令查看,会在namenode所在机器上看到namenode,secondaryNamenode, ResourceManager
[hadoop@namenode hadoop]$ jps
9097 Jps
8662 SecondaryNameNode
8836 ResourceManager
8459 NameNode
会在datanode1所在机器上看到datanode,tasktracker.否则启动失败,检查配置是否有问题。
[root@datanode1 .ssh]# jps
4885 Jps
4623 DataNode
4736 NodeManager
datanode1所在机器上看到datanode,NodeManager.
$ hdfs dfsadmin -report
停止hadoop
$ ./sbin/stop-dfs.sh
$ ./sbin/stop-yarn.sh
查看HDFS
http://192.168.1.150:50070/dfshealth.jsp