大数据笔记02--HDFS的搭建

三种模式

1.伪分布式:只有一台服务器,运行所有节点(仅用于测试学习)
2.完全分布式:各个节点分布在不同服务器上,资源使用不冲突
3.高可用的完全分布式:提高HDFS的可用性

伪分布式

仅使用hadoop01一台服务器

搭建步骤

1. 配置免密登录 hadoop01->hadoop01
在~/.ssh目录下

生成私钥
	
ssh-keygen -t rsa
	
将公钥传给自己
	
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01

2. 配置JDK
在/etc/profile写入

export JAVA_HOME=/opt/software/jdk/jdk1.8.0_151
export PATH=\$PATH:$JAVA_HOME/bin

3. 修改hdfs-site.xml配置文件

<property>
	<-- 副本数量 默认3 -->
	<name>dfs.replication</name>
	<value>1</value>
</property>
	<-- SNN节点地址 伪分布式配置在当前地址-->
<property>     
	<name>dfs.namenode.secondary.http-address</name>
   	<value>hadoop01:50090</value>
</property>

4. 修改core-site.xml配置文件

<property>
	<-- 前缀 -->
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop01:9000</value>
</property>
<property>
	<-- 存储目录 没有则创建 -->
    <name>hadoop.tmp.dir</name>
    <value>/var/abc/hadoop/local</value>
</property>

5. 修改slaves配置文件
即从节点名,伪分布式从节点为自己,所以写

hadoop01

6. 配置hadoop环境变量
在用户配置~/.bashrc内添加

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

7. 格式化NameNode(创建目录以及文件)

hdfs namenode -format

8. 启动HDFS

start-dfs.sh

遇到的问题

  1. 找不到JAVA_HOME --> 在用户配置文件~/.bashrc中也配置JAVA_HOME
  2. 找不到hadoop01的错误 --> 未修改/etc/hosts,写入ip+主机名
  3. 初始化时找不到namenode主类 --> 检查命令是否正确,或重新解压文件

完全分布式

node01 NameNode
node02 SecondaryNameNode和DataNode
node03 DataNode
node04 DataNode

搭建步骤

1. 时间同步
在各个节点安装ntp命令

yum install ntp

查找最新的时间服务器

ntp1.aliyun.com

同步时间

ntpdate ntp1.aliyun.com

2. 配置免密登录
node01->node01 | node01->node02 | node01->node03 | node01->node04

	所有节点执行
	
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
在node01节点执行,将node01的公钥加入到其他节点的白名单中
	
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04

3. 所有节点配置JDK

4. 修改hdfs-site.xml配置文件

<property>
	<-- 副本数量 默认3 -->
    <name>dfs.replication</name>
    <value>3</value>
</property>
	<-- SNN节点地址 -->
<property>     
 	<name>dfs.namenode.secondary.http-address</name>
    <value>node02:50090</value>
</property>

5. 修改core-site.xml配置文件

<property>
	<-- 前缀 -->
    <name>fs.defaultFS</name>
    <value>hdfs://node01:9000</value>
</property>
<property>
	<-- 存储目录 没有则创建 -->
    <name>hadoop.tmp.dir</name>
    <value>/var/abc/hadoop/cluster</value>
</property>

6. hadoop环境变量

7. 修改slaves配置文件
修改为

node02
node03
node04

8. 将配置好的安装包分发到其他节点上
在hadoop的上级目录

scp -r hadoop-2.6.5 root@node02:/opt/software/hadoop/
scp -r hadoop-2.6.5 root@node03:/opt/software/hadoop/
scp -r hadoop-2.6.5 root@node03:/opt/software/hadoop/
	
或简写为
	
scp -r hadoop-2.6.5 root@node02:`pwd`

9. 将所有的HDFS相关的进程关闭
格式化NameNode(创建目录以及文件)
在node01节点执行

hdfs namenode -format
  1. 启动HDFS
start-dfs.sh

遇到的问题

  1. 分发公钥时找不到节点 --> 未配置hosts
  2. 启动后找不到存活节点 --> 所有节点都应该配置hosts
  3. 外部无法访问hdfs --> 关闭防火墙
临时关闭
service iptables stop

永久关闭
chkconfig iptables off

高可用的完全分布式

集群规划

集群规划

搭建步骤

  1. 配置免密登录
    node01->node01 | node01->node02 | node01->node03 | node01->node04
    node02->node01
  2. 所有节点配置JDK
  3. 修改hdfs-site.xml配置文件
<property>
 		    <name>dfs.nameservices</name>
 		    <value>mycluster</value>
</property>
<property>
	<name>dfs.ha.namenodes.mycluster</name>
	<value>nn1,nn2</value>
</property>
<property>
	<name>dfs.namenode.rpc-address.mycluster.nn1</name>
	<value>node01:8020</value>
</property>
<property>
	<name>dfs.namenode.rpc-address.mycluster.nn2</name>
	<value>node02:8020</value>
</property>
<property>
	<name>dfs.namenode.http-address.mycluster.nn1</name>
	<value>node01:50070</value>
</property>
<property>
	<name>dfs.namenode.http-address.mycluster.nn2</name>
	<value>node02:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>
<property>
	  <name>dfs.journalnode.edits.dir</name>
	  <value>/var/sxt/hadoop/ha/jn</value>
</property>
<property>
	  <name>dfs.client.failover.proxy.provider.mycluster</name>
	  <value>org.apache.hadoop.hdfs.server.namenode.
	  				ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
	  <name>dfs.ha.fencing.methods</name>
	  <value>sshfence</value>
</property>
<property>
	  <name>dfs.ha.fencing.ssh.private-key-files</name>
	  <value>/root/.ssh/id_rsa</value>
</property>
<property>
	   <name>dfs.ha.automatic-failover.enabled</name>
	   <value>true</value>
 </property>
  1. 修改core-site.xml配置文件
<property>
	   <name>fs.defaultFS</name>
	   <value>hdfs://mycluster</value>
</property>
<property>
	   <name>ha.zookeeper.quorum</name>
	   <value>node02:2181,node03:2181,node04:2181</value>
</property>
  1. 修改slaves配置文件
    修改为
node02
node03
node04
  1. 将配置好的HDFS安装包拷贝到node02 node03 node04
scp -r hadoop-2.6.5 root@node02:/opt/software/hadoop/
scp -r hadoop-2.6.5 root@node03:/opt/software/hadoop/
scp -r hadoop-2.6.5 root@node03:/opt/software/hadoop/
  1. 格式化NameNode(创建目录以及文件)
  • 在node01、node02、node03分别执行如下命令
hadoop-daemon.sh start journalnode
  • 随机选择一台NameNode执行:
hdfs namenode -format

单独启动NN1
hadoop-daemon.sh start namenode
  • 另外一台NameNode节点执行:
同步元数据
hdfs namenode  -bootstrapStandby
  1. 搭建zookeeper集群
  • 解压
  • 修改conf目录下的zoo_sample.cfg的名称,改为zoo.cfg
    mv zoo_sample.cfg zoo.cfg
  • 修改zoo.cfg
    dataDir=/var/abc/zookeeper
    server.1=node02:2888:3888
    server.2=node03:2888:3888
    server.3=node04:2888:3888
  • 在dataDir目录下创建一个myid文件,在这个文件中写上当前节点ID号
  • 将配置好的zookeeper安装包拷贝到node03 node04
  • 拷贝完毕后,在各自节点上创建myid号,ID号要依次递增
  • 三台zk在bin内执行serverZK.sh start
  1. 启动zkfc
hdfs zkfc -formatZK
  1. 关闭所有节点上的进程
    (将零散开启的、用于初始化集群的进程关闭)
stop-dfs.sh
  1. 启动HDFS
start-dfs.sh

遇到的问题

  1. dataDir目录需手动创建,并在其下创建myid
  2. 未在三台zookeeper节点上启动ZK服务,在启动zkfc时报错找不到zk进程

*虚拟机的配置

  1. 查看虚拟机ip
ifconfig
  1. 根据查询到的ip修改ipcfg文件
cd /etc/sysconfig/network-scripts/
vim ifcfg-eth0
	
修改
ONBOOT=yes
BOOTPROTO=none

添加
IPADDR=192.168.180.128 (查询到的ip)
PREFIX=24
GATEWAY=192.168.180.2 (根据ip修改)
DNS1=8.8.8.8

  1. 复制虚拟机,并重新执行1和2
    (可将JAVA_HOME和HADOOP_HOME一并配置好后再复制)
  2. 修改hostname
cd /etc/sysconfig/
vim network
  1. 修改hosts
vim /etc/hosts
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值