Hadoop完全分布式集群搭建

发布 : 2016-03-20 分类 : 大数据 浏览 :

使用四台Linux机器搭建集群规划:

1
2
3
4
5
6
7
8
9
10
11
12
13
192.168.230.10  192.168.230.11  192.168.230.12  192.168.230.14

NameNode

DataNode DataNode DataNode

SecondaryNameNode

```
## 1.检查防火墙是否关闭./etc/hosts主机名与ip是否映射.能否联网.是否安装ssh.集群的时间是否一致(通过时间生成block id)

```bash
在node1/192.168.230.10上进行操作:

1.1.更改/etc/目录下的hosts文件,添加集群主机和ip地址的映射

1
2
3
4
5
[root@node1 ~]# vi /etc/hosts
192.168.230.10 node1
192.168.230.11 node2
192.168.230.12 node3
192.168.230.14 node5

1.2.将node1的/etc/目录下的hosts文件发送给node2.node3.node5的/etc/目录下,覆盖原hosts文件

1
2
3
[root@node1 ~]# scp /etc/hosts root@node2:/etc/
[root@node1 ~]# scp /etc/hosts root@node3:/etc/
[root@node1 ~]# scp /etc/hosts root@node5:/etc/

1.3.设置ssh免秘钥登录

1
2
3
4
5
6
操作四台机器node1.node2.node3.node5分别生成秘钥目录

[root@node1 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
[root@node2 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
[root@node3 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
[root@node5 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

1.3.1.在node1上进行免密码登录就用的是私钥,登录别的机器比如node2.node3.node5则用的是公钥

1
2
把公钥文件放入认证文件中去
[root@node1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

1
2
3
4
5
6
7
8
9
[root@node1 ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .ssh
第一次登录需要密码
ssh node1

选择node1作为执行脚本的机器

将公钥认证文件放到node2中去
ssh node2

1.3.2.将node1的公钥发送给node2.node3.node5的~/opt/目录中

1
2
3
4
5
6
7
8
9
10
11
[root@node1 ~]# scp ~/.ssh/id_dsa.pub root@node2:/opt/
root@node2's password:
id_dsa.pub 100% 600 0.6KB/s 00:00
[root@node1 ~]# scp ~/.ssh/id_dsa.pub root@node3:/opt/
root@node3's password:
Permission denied, please try again.
root@node3's password:
id_dsa.pub 100% 600 0.6KB/s 00:00
[root@node1 ~]# scp ~/.ssh/id_dsa.pub root@node5:/opt/
root@node5's password:
id_dsa.pub

1.3.3.node2.node3.node5将node1的公钥放到认证文件中去

1
2
3
[root@node2 ~]$ cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
[root@node3 ~]$ cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
[root@node5 ~]$ cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys

1.3.4.node1免秘钥登录node2.node3.node5

1
2
3
[root@node1 ~]# ssh node2
[root@node1 ~]# ssh node3
[root@node1 ~]# ssh node5

1.4.同步集群时间

1
[root@node1 ~]# yum install ntpdate

1
[root@node1 ~]# ntpdate -u ntp.sjtu.edu.cn

1.5.在node1.node2.node3.node5上检查是否有安装jdk

1
2
3
4
[root@node1 ~]# javac -version
javac 1.7.0_79
[root@node1 ~]# echo $JAVA_HOME
/usr/java/jdk1.7.0_79

1.6.上传Hadoop压缩文件到node1主机指定目录上

1.7.解压hadoop压缩文件

2.在node1(NameNode)上配置/opt/modules/hadoop-2.5.1/etc/hadoop/目录下的hadoop-env.sh文件

1
2
export JAVA_HOME=/usr/java/jdk1.7.0_79
export HADOOP_PREFIX=/opt/modules/hadoop-2.5.1

3.在node1(NameNode)上配置/opt/modules/hadoop-2.5.1/etc/hadoop/目录下的core-site.xml文件

1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 指定hadoop的临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.1</value>
</property>
</configuration>

4.在node1(NameNode)上配置/opt/modules/hadoop-2.5.1/etc/hadoop/目录下的hdfs-site.xml文件

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node5:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>node5:50091</value>
</property>
</configuration>

5.在node1(NameNode)上配置/opt/modules/hadoop-2.5.1/etc/hadoop/目录下的slaves文件

1
2
3
4
5
slaves中配的是datanode的主机名

node2
node3
node5

6.在node1(NameNode)上配置/opt/modules/hadoop-2.5.1/etc/hadoop/目录下的masters文件

1
2
3
masters中配的是secondarynamenode的主机名

node5

6.配置hadoop的环境变量

1
2
3
4
[root@node1 ~]# vi ~/.bash_profile

export HADOOP_HOME=/opt/modules/hadoop-2.5.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

6.1.将~目录下的.bash_profile配置环境变量的文件发送给node2.node3.node5

1
2
3
4
5
6
7
8
9
[root@node1 ~]# scp ~/.bash_profile root@node2:~/
[root@node1 ~]# scp ~/.bash_profile root@node3:~/
[root@node1 ~]# scp ~/.bash_profile root@node5:~/

使配置文件生效
[root@node1 ~]# source ~/.bash_profile
[root@node2 ~]# source ~/.bash_profile
[root@node3 ~]# source ~/.bash_profile
[root@node5 ~]# source ~/.bash_profile

7.将node1主机/opt/modules/hadoop-2.5.1目录下的内容发送给node2.node3.node5主机的/opt/modules/hadoop-2.5.1目录下

1
2
3
[root@node1 ~]# scp -r /opt/modules/hadoop-2.5.1 root@node2:/opt/modules/hadoop-2.5.1
[root@node1 ~]# scp -r /opt/modules/hadoop-2.5.1 root@node3:/opt/modules/hadoop-2.5.1
[root@node1 ~]# scp -r /opt/modules/hadoop-2.5.1 root@node5:/opt/modules/hadoop-2.5.1

8.在node1[192.168.230.10]主机下初始化namenode

1
[root@node1 hadoop-2.5.1]# ./bin/hdfs namenode -format

9.启动HDFS

1
[root@node1 hadoop-2.5.1]# ./sbin/start-dfs.sh

10.访问namenode的web监控

1
2
3
node1:50070
在地址栏访问NameNode的WebUI:
http://192.168.230.10:50070/

11.访问secondarynamenode的web监控

1
2
3
node5:50090 
在地址栏访问SecondaryNameNode的WebUI:
http://192.168.230.14:50090/

12.hdfs上传文件

1
2
3
4
5
6
7
8
9
10
bin/hdfs -mkdir /usr
bin/hdfs -put XXXX /usr
bin/hdfs -ls XXXX /usr

HDFS命令:

在hadoop-2.5.1目录下
hdfs
hdfs admin
hdfs dfs

13.查看日志

1
2
3
4
查找.log结尾的文件

cd /opt/modules/hadoop-2.5.1/log
head -10

14.看端口

1
netstat -ntpl |grep java
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2016/03/20/Hadoop完全分布式集群搭建/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹