大数据学习(一)-------- HDFS
需要精通java开发,有一定linux基础。
1、简介
大数据就是对海量数据进行数据挖掘。
已经有了很多框架方便使用,常用的有hadoop,storm,spark,flink等,辅助框架hive,kafka,es,sqoop,flume等。
常见应用推荐系统,用户画像等。
2、hadoop
hadoop有三个核心组件:
hdfs:分布式文件系统
mapreduce:分布式运算编程框架
yarn:分布式资源调度平台
3、hdfs原理
hdfs存放的就是文件,顶层目录是/,可以对文件进行增删改查移的操作。
只是单机文件是存在一台主机中,而hdfs是存在多个机器中。
hdfs的运行机制:一个hdfs系统,由一台运行了namenode的服务器,和n台运行了datanode的服务器组成。
一个存储的hdfs上的文件会由客户端指定备份几个副本,然后这个文件会被切块,分布的存在多个机器上,datanode负责在多个机器上进行存储,而这些存储信息(也叫做元数据)就存在namenode里。
4、安装部署hdfs
准备多台机器
配置host和ip
防火墙 jdk
上传hadoop包
修改hadoop-env.sh 指定java_home
修改core-site.xml 指定为hdfs namenode位置
修改hdfs-site.xml 指定namenode存储元数据目录 datanode存放文件目录
hdfs-site.xml还可以配切片大小和副本数量
拷贝到各个机器
在namenode机器上 :
初始化namenode元数据目录hadoop namenode -format
启动namenode hadoop-daemon.sh start namenode
启动所有datanode hadoop-daemon.sh start datanode
namenode datanode都是一个占用端口的软件进程,怎么启动都可以,一般会在第一台机器启动namenode,其他的启动节点datanode。
有一个web页:50070
5、hdfs客户端
三种客户端模式:网页 命令行 还有api网络连接
命令行:
上传文件
hadoop fs -put /本地文件 /hdfs路径
hadoop fs -copyfromlocal /本地文件 /hdfs路径 这个相当于put
hadoop fs -movefromlocal /本地文件 /hdfs路径
下载文件
hadoop fs -get /hdfs中的路径 /本地磁盘目录
hadoop fs -copytolocal /hdfs中的路径 /本地磁盘路径 这个相当于get
hadoop fs -movetolocal /hdfs路径 /本地路径
创建文件夹 hadoop fs -mkdir -p /目录名
移动 hadoop fs -mv /hdfs的路径 /hdfs的另一个路径
删除 hadoop fs -rm -r /文件或文件夹
修改权限 hadoop fs -chown user:group /hdfs路径
hadoop fs -chmod 744 /hdfs路径
追加 hadoop fs -appendtofile /本地文件 /hdfs中的文件
显示 hadoop fs -cat /hdfs中的文件
hadoop fs -tail /hdfs中的文件
hdfs的java客户端:
windows下开发hadoop,需要下载window版本的hadoop安装包,配置环境变量hadoop_home,这样才可以在windows本地进行对hadoop的开发。
configuration conf = new configuration(); filesystem fs = filesystem.get(new uri("hdfs://hdp-01:9000"),conf,"root"); fs.copyfromlocalfile(new path("本地路径"),new path("hdfs的路径")); fs.copytolocalfile(new path("hdfs的路径"),new path("本地路径"))
6、hdfs核心原理
namenode管理的是元数据:hdfs目录结构,每一个文件的块信息(块的id,块的副本数量,块的存放位置)
**namenode记录元数据原理:
namenode的实时的完整的元数据存储在内存中;
namenode还会在磁盘中(dfs.namenode.name.dir)存储内存数据在某个时间点上的镜像文件;
namenode会把引起元数据变化的客户端操作记录在edits日志文件中。
**checkpoint原理:
secondarynamenode会定期从namenode上下载fsimage镜像和新生成的edits日志,然后加载fsimage 镜像到内存中,然后顺序解析edits文件,对内存中的元数据对象进行修改(整合)
整合完成后,将内存元数据序列化成一个新的fsimage,并将这个fsimage镜像文件上传给namenode
可以配置secondary namenode的启动位置和元数据保存目录
写文件原理:向namenode请求,切块,建立连接,流入到指定datanode。
读文件原理:向namenode请求,获取元数据信息,把所有块流下来。
上一篇: MySQL优化原理,我一定得告诉你!
下一篇: 服务器硬件与linux系统