经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » Hadoop » 查看文章
大数据学习(一)-------- HDFS
来源:cnblogs  作者:独孤风  时间:2019/4/12 10:15:56  对本文有异议

需要精通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的开发。

  1. Configuration conf = new Configuration();
  2. FileSystem fs?= FileSystem.get(new URI("hdfs://hdp-01:9000"),conf,"root");
  3. fs.copyFromLocalFile(new Path("本地路径"),new Path("hdfs的路径"));
  4. 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请求,获取元数据信息,把所有块流下来。

原文链接:http://www.cnblogs.com/tree1123/p/10683570.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号