2021-01-30 大数据课程笔记 day10

时间煮雨
@R星校长

课程重点

HDFS 完全分布式搭建(熟练)
Hadoop 3.x 新特性(了解)
Hadoop Federation(了解)
Hadoop HA(掌握)
Hadoop HA 集群搭建(熟练)
java 客户端操作 HDFS(熟练)

HDFS 完全分布式搭建
规划
node1 node2 node3 node4
NameNode SecondaryNameNode
DataNode-1 DataNode-2 DataNode-3
  1. 基础设置
    a) 网络
    b) ssh: 哪个节点将公钥分发,成为启动 start-dfs.sh 脚本的主机和这个主机上的进程没有关系
    c) jdk
  2. 应用搭建
    a) 部署&配置
    b) 执行:
搭建步骤
免密钥设置

四台服务器之间互相均可以免密登录
a、 首先在四台服务器上都要执行:

ssh-keygen  -t  dsa  -P  ''  -f  ~/.ssh/id_dsa

b、在 node1 上将 node1 的公钥拷贝到 authorized_keys 中:

cat  ~/.ssh/id_dsa.pub  >>  ~/.ssh/authorized_keys

将该文件拷贝给 node2:

scp  ~/.ssh/authorized_keys   node2:/root/.ssh/

c、在 node2 中将 node2 的公钥追加到 authorized_keys 中:

cat  ~/.ssh/id_dsa.pub  >>  ~/.ssh/authorized_keys

将该文件拷贝给 node3:

scp  ~/.ssh/authorized_keys   node3:/root/.ssh/

d、在 node3 中将 node3 的公钥追加到 authorized_keys 中:

cat  ~/.ssh/id_dsa.pub  >>  ~/.ssh/authorized_keys

将该文件拷贝给 node4:

scp  ~/.ssh/authorized_keys   node4:/root/.ssh/

e、在 node4 中将 node4 的公钥追加到 authorized_keys 中:

cat  ~/.ssh/id_dsa.pub  >>  ~/.ssh/authorized_keys

将该文件拷贝给 node1、node2、node3:

scp  ~/.ssh/authorized_keys   node1:/root/.ssh/
scp  ~/.ssh/authorized_keys   node2:/root/.ssh/
scp  ~/.ssh/authorized_keys   node3:/root/.ssh/
JDK 安装环境变量配置

首先将 node1 中的 hadoop-2.6.5 删除,或者通过快照还原到单机伪分布安装前的环境。

node1-node4

mkdir /opt/apps

将 jdk-8u221-linux-x64.rpm 上传到 node1/opt/apps

将 /opt/apps 下的 jdk.rpm scp 到 node2、node3、node4 的对应目录中

scp jdk-8u221-linux-x64.rpm node2:`pwd`
scp jdk-8u221-linux-x64.rpm node3:`pwd`
scp jdk-8u221-linux-x64.rpm node4:`pwd`

在 node1、node2、node3、node4 上安装 jdk 并配置 profile 文件

rpm -ivh jdk-8u221-linux-x64.rpm

将 hadoop 安装文件上传到 node1 的 /opt/apps 目录下,并解压到 /opt 目录下

tar  -zxvf  hadoop-2.6.5.tar.gz  -C  /opt

node1 上修改环境变量

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

Node2 上修改环境变量:

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

让配置文件生效:

source /etc/profile

将 node2 的 /etc/profile 拷贝到 node3、node4 上并执行 . /etc/profile

scp /etc/profile node[34]:`pwd`
Hadoop 相关配置
先在 node1 上配置好,然后将之 scp 到 node2-node4 上

cd /opt/hadoop-2.6.5/etc/hadoop/
  1. hadoop-env.sh 配置
$HADOOP_HOME/etc/hadoop

由于通过 SSH 远程启动进程的时候默认不会加载 /etc/profile 设置,
JAVA_HOME变量就加载不到,需要手动指定。

export  JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
  1. 修改 slaves 指定 datanode 的位置
node2
node3
node4
  1. 修改 hdfs-site.xml
##指定 SNN 的位置
<configuration>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:50090</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>
  1. 修改 core-site.xml
<configuration>
  <!--用来指定hdfs的老大,namenode的地址-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:9000</value>
  </property>
  <!-- 指定hadoop的临时目录位置-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/bjsxt/hadoop/full</value>
  </property>
</configuration>
  1. 拷贝到 node2-node4 上
##先将之打成压缩包
[root@node1 opt]# tar -zcvf hadoop-2.6.5.tar.gz hadoop-2.6.5/
##将 /opt/hadoop-2.6.5.tar.gz scp 到 node2、node3、node4 的对应目录中
scp  hadoop-2.6.5.tar.gz node2:/opt
scp  hadoop-2.6.5.tar.gz node3:/opt
scp  hadoop-2.6.5.tar.gz node4:/opt
## node2、node3、node4 分别解压
tar -zxvf hadoop-2.6.5.tar.gz
格式化并启动
##格式化
##在 node1 上执行:
hdfs  namenode  -format
##启动即可(该命令在四台服务器上哪一台执行都可以)
start-dfs.sh
http://192.168.20.201:50070
[root@node1 opt]# hdfs dfs -mkdir -p /user/root
[root@node1 opt]# hdfs dfs -put hadoop-2.6.5.tar.gz /user/root
停止
stop-dfs.sh
Hadoop Federation(了解)联邦
NameNode 需要多少内存

问题:NameNode 需要多大的内存?

业界看法:1GB 内存放 1,000,000 block 元数据。

200 个节点的集群中每个节点有 24TB 存储空间,block 大小为 128MB,
block 复制因子为 3,能存储大概 12500,000 个 block(或更多)
:200×24,000,000 MB/(128MB×3)。此时,NameNode 内存大概需要 12.5GB。

5000 个节点的集群需要多大的 NameNode 的内存?

12.5*25=312.5GB
HDFS 组成
  1. Namespace
	a) 包括目录,文件和 block 块。
	b) 支持所有跟文件系统命名空间相关的操作
	如:创建、删除、修改和列出文件及目录。
  1. Block 存储服务包含两部分:
    a) NameNode 中的 block 块管理
	    i. 通过心跳机制和注册机制提供了对 DataNode 集群的管理。
	    ii. 处理 block 块报告,管理 block 块的位置。
	    iii. 提供跟 block 块相关的操作,如:创建、修改、删除和查询 block 块的位置。
	    iv. 管理 block 副本如何放置,当副本数少于指定值之后增加副本,
	    当副本数多于指定值之后删除副本。
    b) 存储:
        在 DataNode 本地文件系统中存储 block 块,并提供读/写访问。

在这里插入图片描述

  1. NameNode 节点之间是相互独立的联邦的关系,即它们之间不需要协调服务。
  2. DataNode 向集群中所有的 NameNode 注册,发送心跳和 block 块列表报告,处理来自 NameNode 的指令。
  3. 用户可以使用 ViewFs 创建个性化的命名空间视图,ViewFs 类似于在 Unix/Linux 系统中的客户端挂载表。

VERSION

namespaceID 用于标记 namenode 的 ID
blockpoolID 用于标记 block 存储池子的 ID
clusterID 集群的 ID
在这里插入图片描述

Hadoop-env.sh

配置 JAVA_HOME

core-site.xml 配置:

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>viewfs://ClusterX</value>
  </property>
  <property>
    <name>fs.viewfs.mounttable.ClusterX.link./data</name>
    <value>hdfs://node1:8020/data</value>
  </property>
  <property>
    <name>fs.viewfs.mounttable.ClusterX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值