前言
Hadoop核心内容
Hadoop是一个大数据的技术(框架/生态),其核心内容包括HDFS(分布式文件存储系统)、MapReduce(分布式运算编程框架)、Yarn(分布式运算资源调度系统)、Commons工具类
在现代大数据中,显而易见需要我们解决的问题 1)海量数据的存储 2)海量数据的运算 3)存储、运算资源的分配、调度
Hadoop技术生态:
解决海量数据的存储:HDFS(分布式文件存储系统)
解决海量数据的运算:MapReduce(分布式运算编程框架)
运算资源调度和任务监控平台:Yarn(分布式运算资源调度系统)
工具包 Commons
Hadoop的特点:
1)高容错,高可用性
2)容易扩展
3)廉价性
下面将进入HDFS的学习
HDFS的概念
什么是HDFS
HDFS 分布式文件系统 全名 hadoop distribute file system
什么是文件系统
提供数据的 读取、写入、删除 文件(文件夹)、移动文件(文件夹)、提供目录
分布式文件系统
1)在我们比较常见的电脑中,如windows总,文件总是存在于这一台系统中
2)分布式,就是文件存储于多台机器中,这多台的文件 对外整体看做一个文件管理系统,对外提供虚拟的访问路径,实际上文件存储分布在各个机器上,这就是HDFS 分布式文件存储系统
HDFS文件系统构建前提
1)至少三台服务器(linux)构成的集群,本系列所使用集群服务器为3个,前面文章展示了一个虚拟机的创建,只需要克隆两个即可,即可构成三个一模一样环境的虚拟机,但要记得更改ip地址的配置和别名。
注:集群是同一个组件的多个实例,形成的逻辑上的整体;分布式的关键在于是否通过交换信息的方式进行协作,在这里我们的集群(三台服务器)也是一个分布式文件系统
2)服务器之间要进行免密。(免密操作,这里就不再赘述;)
3)三台虚拟机的防火墙和本地windows防火墙全部关闭,开机禁止启用。
4)java环境变量的配置
5)任意两台服务器之间要可以进行ping通
Hadoop集群搭建(HDFS系统搭建)详解
HDFS原理
HDFS架构
HDFS 采用主从架构,即由单个节点Name Node(NN)和多个Data Node(DN)组成
核心内容
1)NameNode:
初始化集群 集群ID
接受datanode的注册 ,注册成功,更新存储目录
维护datanode的节点列表,对外提供存储空间
接收客户端的读写请求
对外提供虚拟的访问目录
维护管理元数据
接收datanode的心跳汇报,维护集群,接收数据汇报
维护数据安全存储(副本个数的检验和复制)
2)Datanode:
注册 为集群提供存储资源
发送心跳 报告工作情况
执行数据块的复制工作
执行用户的读写请求
环境搭建
我们有三台机器,我们选用其中一台作为name node的主节点机器,这三台同时也是datanode服务的机器
datanode服务和namenode 实际上指的是机器上运行的某个进程服务
上传hadoop包
解压
tar -xzvf hadoop-3.1.1.tar.gz -C /opt/app
配置
有三大配置文件需要配置
core-site.xml 配置文件系统默认采用hdfs
hadoop.env.sh 配置hadoop中JAVA_HOME 的环境变量
hdfs-site.xml :
配置namenode的位置 其他机器需要找到namenode
配置namenode存储元数据的位置 元数据(一些字符串:虚拟目录 文件数据块 ----及所在的机器 还有一些其他元数据)
配置datanode存储数据的位置 (我们是三台服务器 其中有一台既扮演着namenode 又扮演datanode)
配置sn的位置 secondary namenode
配置hadoop.env.sh
vi /opt/apps/hadoop-3.1.1/etc/hadoop/hadoop-env.sh
:set nu 显示行号
/JAVA_HOME 找到JAVA_HOEM的位置并且配置
按n键进行搜索到的下一个选项 并输入正确的jdk所在的路径 注意 去掉前面的# #号被视为注释
配置core-site.xml
vi /opt/apps/hadoop-3.1.1/etc/hadoop/core-site.xml
配置内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux01:8020</value>
</property>
配置hdfs-site.xml
vi /opt/apps/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
配置:
<!-- 集群的namenode的位置 datanode能通过这个地址注册-->
<property>
<name>dfs.namenode.rpc-address</name>
<value>linux01:8020</value>
</property>
<!-- namenode存储元数据的位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hdpdata/name</value>
</property>
<!-- datanode存储数据的位置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hdpdata/data</value>
</property>
<!-- secondary namenode机器的位置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>linux02:50090</value>
</property>
分发
将linux01上的 配置好的文件及包 直接发给另外两台机器
scp -r hadoop-3.1.1 linux02:$PWD scp 是ssh cp -r 是递归循环复制 此命令意思是 将hadoop文件夹及其下所有文件复制到 linux02服务器下的 当前目录
scp -r hadoop-3.1.1 linux03:$PWD
注:上述两条命令需在 /opt/apps/下面执行 因为 此命令将会把hadoop复制给另外两台服务器同样的目录中
初始化
需要在bin目录下执行
./hadoop namenode -format 出现下列显示 即表示初始化成功
启动
需要在sbin中执行
./hadoop-daemon.sh start namenode
jps查看java 进程
访问页面 http://linux01:9870/ 下列页面显示 当前 文件系统(整体hdfs) 的容量和其他信息
启动三台linux机器上的datanode
分别在linux01 linux02 linux03 的sbin目录下执行
./hadoop-daemon.sh start datanode
查看页面主机情况
更多学习、面试资料尽在微信公众号:Hadoop大数据开发