HDFS集群搭建部署(two day)

搭建hdfs分布式集群

上篇学习了一个hdfs系统(集群)的组成结构,结尾有示例图,接下来学习hdfs集群的具体步骤:

一、首先需要准备N台linux服务器

没那条件,用虚拟机即可!

先准备4台虚拟机:1个namenode节点  + 3 个datanode 节点(最好先建一个虚拟机,把jdk,环境变量弄好,还有要用到的包先扔进去,最后克隆完以后只需要改一下ip和网关就行,省去复制)

二、修改各台机器的主机名和ip地址

主机名:hdp-01  对应的ip地址:192.168.103.11

主机名:hdp-02  对应的ip地址:192.168.103.12

主机名:hdp-03  对应的ip地址:192.168.103.13

主机名:hdp-04  对应的ip地址:192.168.103.14

三、从windows中用Xshell进行远程连接

在windows中将各台linux机器的主机名配置到的windows的本地域名映射文件中:

需要配置域名的话(C:\Windows\System32\drivers\etc\hosts),配置好可以直接ping域名

这些弄好以后可以关掉,让在后台运行,用Xshell连接(或者其他软件)

四、配置linux服务器的基础软件环境

       防火墙

关闭防火墙:service iptables stop 

关闭防火墙自启: chkconfig iptables off

       安装jdk:(hadoop体系中的各软件都是java开发的)

  1. 利用alt+p 打开sftp窗口,然后将jdk压缩包拖入sftp窗口
  2. 然后在linux中将jdk压缩包解压到/root/apps 下
  3. 配置环境变量:JAVA_HOME   PATH

       vi /etc/profile   在文件的最后,加入:

       export JAVA_HOME=/root/apps/jdk1.8.0_60

       export PATH=$PATH:$JAVA_HOME/bin

 

 集群内主机的域名映射配置

vi /etc/hosts

  1. 修改完成后,记得 source /etc/profile使配置生效
  2. 检验:在任意目录下输入命令: java -version 看是否成功执行
  3. 将安装好的jdk目录用scp命令拷贝到其他机器(上述(及以下)在被克隆机器上做过此操作即可省略工作量)
  4. 将/etc/profile配置文件也用scp命令拷贝到其他机器并分别执行source命令

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.103.11   hdp-01

192.168.103.12   hdp-02

192.168.103.13   hdp-03

192.168.103.14   hdp-04

五、安装hdfs集群

1、上传hadoop安装包到hdp-01

2、修改配置文件

核心配置参数:

 

  1. 指定hadoop的默认文件系统为:hdfs
  2. 指定hdfs的namenode节点为哪台机器
  3. 指定namenode软件存储元数据的本地目录
  4. 指定datanode软件存放文件块的本地目录

 hadoop的配置文件在:hadoop安装目录/etc/hadoop/

1) 修改hadoop-env.sh(配置环境变量)

export JAVA_HOME=/root/apps/jdk1.8.0_60

2) 修改core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://hdp-01:9000</value>             ----->这里的value值为uri:统一资源定位

</property>

</configuration>

3) 修改hdfs-site.xml

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>/root/hdpdata/name/</value>               -------->此目录不存在会创建

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/root/hdpdata/data</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hdp-02:50090</value>      --------------->secondarynamenode最好不要和namenode放在一台机器上,默认端口50090

</property>

</configuration>

5) 启动HDFS

所谓的启动HDFS,就是在对的机器上启动对的软件

要运行hadoop的命令,需要在linux环境中配置HADOOP_HOME和PATH环境变量

vi /etc/profile     (注意顺序)

export JAVA_HOME=/root/apps/jdk1.8.0_60

export HADOOP_HOME=/root/apps/hadoop-2.8.1

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

首先,初始化namenode的元数据目录

要在hdp-01上执行hadoop的一个命令来初始化namenode的元数据存储目录

hadoop namenode -format

 

  1. 创建一个全新的元数据存储目录
  2. 生成记录元数据的文件fsimage 
  3. 生成集群的相关标识:如:集群id——clusterID

然后,启动namenode进程(在hdp-01上)

hadoop-daemon.sh start namenode  (如果没有配环境变量的话,要到hadoop安装目录的sbin下执行)

sbin/hadoop-daemon.sh start namenode  

启动完后,首先用jps查看一下namenode的进程是否存在

(netstst nltp|grep PID)可以看到监听两个端口,9000是内部作为客户端与namenode交互,50070是namenode提供了一个web服务器

然后,在windows中用浏览器访问namenode提供的web端口:50070

http://hdp-01:50070

 

 

然后,启动众datanode

hadoop-daemon.sh start datanode

hadoop-daemon.sh stop datanode(杀掉)

解析:启动datanode,他就回去读取hadoop目录里的配置文件,然后会知道此集群的namenode是哪一台,通过内部9000端口去发请求,namenode就会把它的一些信息告诉datanode,经过此次握手,namenode也就可以识别datanode,

ssh hdp-04 "/root/hadoop-2.7.3/sbin/hadoop-daemon.sh start datanode"  是可以远程启动其他机器的datanode,

所以完全可以写个脚本统一启动其他机器。

hdfs在线扩容(so easy),但是不能删(文件就会缺少)

6) 用自动批量启动脚本来启动HDFS

 ssh-keygen

 ssh-copy-id hdp-01

 ssh-copy-id hdp-02

 ssh-copy-id hdp-03

  1. 先配置hdp-01到集群中所有机器(包含自己)的免密登陆
  2. 配完免密后,可以执行一次  ssh 0.0.0.0
  3. 修改hadoop安装目录中/etc/hadoop/slaves(把需要启动datanode进程的节点列入)
  4. 在hdp-01上用脚本:start-dfs.sh 来自动启动整个集群
  5. 如果要停止,则用脚本:stop-dfs.sh

小记:远程复制命令scp hdfs-site.xml hdp-02:$PWD

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值