hadoop之hdfs

一.hadoop简介

(一)Hadoop起源于Google的三大论文
GFS:Google的分布式文件系统Google File System
MapReduce:Google的MapReduce开源分布式并行计算框架
BigTable:一个大型的分布式数据库
(二)演变关系
GFS—->HDFS
Google MapReduce—->Hadoop MapReduce
BigTable—->HBase

Hadoop名字不是一个缩写,是Hadoop之父Doug Cutting儿子毛绒玩具象命名的
(三)hadoop主流版本:
Apache基金会hadoop,后面的实验用的是这个3.2.1版本的
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)
Hortonworks版本(Hortonworks Data Platform,简称“HDP”)
在这里插入图片描述
(四)Hadoop的框架最核心的设计就是:HDFS和MapReduce。
HDFS为海量的数据提供了存储。
MapReduce为海量的数据提供了计算。
(五)Hadoop框架包括以下四个模块:
Hadoop Common: 这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。
Hadoop YARN: 这是一个用于作业调度和集群资源管理的框架。
Hadoop Distributed File System (HDFS): 分布式文件系统,提供对应用程序数据的高吞吐量访问。
Hadoop MapReduce:这是基于YARN的用于并行处理大数据集的系统
(六)hadoop应用场景:
在线旅游 移动数据 电子商务 能源开采与节能 基础架构管理 图像处理 诈骗检测 IT安全 医疗保健
在这里插入图片描述

二.HDFS简介

运维的话,资源管理层及下面的,特别是hdfs分布式文件系统,是整个大数据体系的基石.
1.HDFS属于Master与Slave结构。一个集群中只有一个NameNode,可以有多个DataNode。
2.HDFS存储机制保存了多个副本,当写入1T文件时,我们需要3T的存储,3T的网络流量带宽;系统提供容错机制,副本丢失或宕机可自动恢复,保证系统高可用性。
3.HDFS默认会将文件分割成block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,会导致内存的负担很重。
4.HDFS采用的是一次写入多次读取的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能
5.HDFS存储理念是以最少的钱买最烂的机器并实现最安全、难度高的分布式文件系统(高容错性低成本),HDFS认为机器故障是种常态,所以在设计时充分考虑到单个机器故障,单个磁盘故障,单个文件丢失等情况。
6.HDFS容错机制:
节点失败监测机制:DN每隔3秒向NN发送心跳信号,10分钟收不到,认为DN宕机。
通信故障监测机制:只要发送了数据,接收方就会返回确认码。
数据错误监测机制:在传输数据时,同时会发送总和校验码

三.hdfs部署

官网部署参考
必须安装Java;必须安装ssh并且必须运行sshd才能使用管理远程Hadoop守护程序的Hadoop脚本

server1
get hadoop-3.2.1.tar.gz jdk-8u181-linux-x64.tar.gz
useradd -u 1001 hadoop
mv * /home/hadoop/
su - hadoop
tar zxf hadoop-3.2.1.tar.gz
tar zxf jdk-8u181-linux-x64.tar.gz
ln -s jdk1.8.0_181/ java
ln -s hadoop-3.2.1 hadoop

cd hadoop/etc/hadoop/
vim hadoop-env.sh
 54 export JAVA_HOME=/home/hadoop/java  #设置为Java安装的根目录
 58 export HADOOP_HOME=/home/hadoop/hadoop

(一)本地独立运行

server1
cd /home/hadoop/hadoop
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'

在这里插入图片描述

(二)伪分布式操作

Hadoop也可以以伪分布式模式在单节点上运行,其中每个Hadoop守护程序都在单独的Java进程中运行

echo westos | passwd --stdin hadoop
su - hadoop
cd /home/hadoop/hadoop/etc/hadoop
vim core-site.xml
 19 <configuration>
 20     <property>
 21         <name>fs.defaultFS</name>
 22         <value>hdfs://localhost:9000</value>  #nodename
 23     </property>
 24 </configuration>

vim hdfs-site.xml
 19 <configuration>
 20     <property>
 21         <name>dfs.replication</name>
 22         <value>1</value>  #副本数
 23     </property>
 24 </configuration>

[hadoop@server1 hadoop]$ cat workers   #数据节点
localhost

ssh-keygen
ssh-copy-id localhost

vim ~/.bash_profile  #/home/hadoop/hadoop/bin格式化脚本,写入环境变量
source ~/.bash_profile

hdfs namenode -format  #格式化文件系统
ll /tmp  #数据目录

在这里插入图片描述

vim ~/.bash_profile  #/home/hadoop/hadoop/sbin 运行脚本
source ~/.bash_profile
start-dfs.sh  #启动NameNode守护程序和DataNode守护程序

在这里插入图片描述

vim ~/.bash_profile  #/home/hadoop/java/bin, java脚本
source ~/.bash_profile
jps

hdfs dfsadmin -report

在这里插入图片描述
在这里插入图片描述

[hadoop@server1 ~]$ hdfs dfs -mkdir -p /user/hadoop  #设置执行MapReduce作业所需的HDFS目录,hadoop=<用户名>
cd /home/hadoop/hadoop
hdfs dfs -put input  #将输入文件复制到分布式文件系统中
hdfs dfs -ls
hdfs dfs -ls input  #查看
hdfs dfs -get input  #下载

在这里插入图片描述
在这里插入图片描述
172.25.2.1:9870
在这里插入图片描述
在这里插入图片描述

[hadoop@server1 hadoop]$ hdfs dfs -rm -r input
Deleted input

stop-dfs.sh  #停止服务

(三)全分布式运行

[root@server1 ~]#yum install nfs-utils -y
vim /etc/exports
/home/hadoop/   *(rw,anonuid=1001,anonuid=1001)
systemctl start nfs

server2 3
useradd -u 1001 hadoop
yum install nfs-utils -y
showmount -e 172.25.2.1
mount 172.25.2.1:/home/hadoop/ /home/hadoop/
server1
su - hadoop
cd /home/hadoop/hadoop/etc/hadoop
vim core-site.xml
 19 <configuration>
 20     <property>
 21         <name>fs.defaultFS</name>
 22         <value>hdfs://server1:9000</value>  #nodename
 23     </property>
 24 </configuration>
 
vim hdfs-site.xml
 19 <configuration>
 20     <property>
 21         <name>dfs.replication</name>
 22         <value>2</value>  #两个副本
 23     </property>
 24 </configuration>
 
vim workers  #数据节点
server2
server3

hdfs namenode -format
cd /home/hadoop/hadoop/sbin
./start-dfs.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

server1
hdfs dfs -mkdir -p /user/hadoop
hdfs dfs -mkdir input
cd /home/hadoop/hadoop/etc/hadoop
hdfs dfs -put * input

在这里插入图片描述
在这里插入图片描述
1.数据节点的热添加

server4
yum install nfs-utils -y
useradd -u 1001 hadoop
mount 172.25.2.1:/home/hodoop/ /home/hadoop/
su - hadoop
ssh server4
cd /home/hadoop/hadoop/etc/hadoop/
vim workers
server2
server3
server4

hdfs --daemon start datanode

在这里插入图片描述
[hadoop@server4 ~]$ hdfs dfs -put jdk-8u181-linux-x64.tar.gz
在这里插入图片描述
在这里插入图片描述
2.数据节点的热删除

server1
cd /home/hadoop/hadoop/sbin
./stop-dfs.sh
cd /home/hadoop/hadoop/etc/hadoop
vim hdfs-site.xml
 19 <configuration>
 20     <property>
 21         <name>dfs.replication</name>
 22         <value>2</value>
 23     </property>
 24     <property>
 25         <name>dfs.hosts.exclude</name>
 26         <value>/home/hadoop/hadoop/etc/hadoop/exclude</value>
 27     </property>
 28 </configuration>
vim exclude
server3
cd /home/hadoop/hadoop/sbin
./start-dfs.sh
hdfs dfsadmin -refreshNodes
hdfs dfsadmin -report

在这里插入图片描述

[root@server3 ~]# hdfs --daemon stop datanode

在这里插入图片描述
hadoop原理漫画
接下来也可以做一下hdfs的高可用和yarn的高可用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值