1、什么是hadoop
1.1功能详解
分布式存储和分布式计算,向下提供基于HDFS 的分布式文件存储系统,向上提供基于MapReduce 的计算框架。上层应用如:对HBASE 数据库的查询请求可以转化为MapReduce 计算调度位于hdfs 上的数据。
注意:1、hadoop和spark框架的底层是用c、c++语言实现的,hadoop的高层使用java写的,而spark是用java、scala、python写的。 2、hadoop可以进行分布式存储;hdfs无限大,其主要的作用存储大数据据和大文件。 3、做分布式集群是面向容灾的,当三分之一的存储容量没有用的时候,但还是可以进行各个分布式项目的存储,有效解决了数据冗余的问题,可以使得数据更加安全。 4、异步比阻塞在通信和资源调度中更加的高效。
1.2名词释疑
1.2.1 HDFS(entire classs)-----可以实现大规模的文件资源的存储
(1)Namenode(teacher)
存储整个文件系统的索引数据(元数据),大规模集群下需要做HA;
(2)Secondarynamenode(monitor)-----类似解决问题的和安排在工作和任务的
可以简单任务是namenode 的快照备份,主备模式;
(3)Datanode(every classmate)
具体存储数据的节点单元(独立的主机slaver),Hadoop 文件系统的block 大小为128 兆。在分布式模式下对每一个block 数据做3 份存储,两份在同一个机柜,一份在不同机柜做多活;( 在hadoop中下的hdfs,其最小单元是block,可以把datanode看作机柜,可以进行容灾处理)
1.2.2 MapReduce
Yarn(Container 、ResourceManger 、NodeManger):ResourceManger——老师(存储着整个文件系统资源)、NodeManger——小组长(安排工作和任务)、Container—— 组员干活的(进行搬砖干活的)
Yarn 是分布式资源调度方案,MapReduce 计算时常用来管理集群协同使得计算能够有序进行。-------yarn可以屏蔽底层的通信
注意:1、windows下的文件系统的文件格式是NTFS格式,lilux系统下的文件格式是ext32。2、hdfs中的block可以存储1kb和1g的文件,当存储1g资源的时候,分成几个block来进行存储 ,但是基本上不存储小文件 3、现在最流行的框架是spark(基于内存的mr--mapreduce)。4、mapmaster监控各个组员是否干完工作和对其工作的进度进行监控(针对container)
2、hadoop环境搭建
主页地址:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop- hdfs/HDFSHighAvailabilityWithNFS.html(本知识点涉及的所有框架都将基于windows10 操作系统进行搭建)
注意:hadoop的通信主要靠avro(原生序列)来进行的。
2.1jdk 安装
JDK 是Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java 应用程序。JDK 是整个java 开发的核心,它包含了JAVA 的运行环境JRE 和java sdk,课程中使用jkd1.8 版本。
注意:jdk是编写java的库,jre是运行java的库。
2.1.1安装
2.1.2设置环境变量
2.2伪分布式的配置文件
在单机开发环境中用多线程的方式模拟集群中机器之间的通信协作叫做伪分布式。(实现一台电脑多线程,模拟分布式)
Hadoop 框架目录结构:
1、提供cli(command line interface)
2、需要初始化的配置文件
3、服务启动脚本
运行流程:1、修改配置文件;2、运行sbin 中的脚本启动相应服务,如分布式文件系统start-dfs.cmd 或者start-yarn.cmd 启动yarn 集群管理;3、服务成功启动以后可以运行bin 目录下的服务项目。
(1)配置环境变量:
加入配置文件目录HADOOP_CONF_DIR 和HADOOP_HOME
(2)检查hadoop 是否下载成功
配置hadoop 环境脚本:etc/hadoop 中找到hadoop-env.cmd 修改:
(3)配置hdfs(MapReduce 和yarn 暂时不做配置,spark 中提供了更加高效的内存MapReduce 模型)
在etc 中找到hdfs 核心配置文件
伪分布式需要修改2 个配置文件core-site.xml 和hdfs-site.xml 。Hadoop 的配置文件是xml 格式,每个配置以声明property 的name 和value 的方式来实现,修改配置文件core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value> /C:/Users/Ginger/hadoop-2.7.1/tmp</value>
<description>Abase for other temporary directories.</description>
</property> <property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> </property>
</configuration>
同样的,修改配置文件hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value> /C:/Users/Ginger/hadoop-2.7.1/data/namenode </value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value> /C:/Users/Ginger/hadoop-2.7.1/data/datanode </value>
</property>
</configuration>
配置完成后,执行NameNode 的格式化: ./bin/hdfs namenode –format
(4)接着开启和守护进程:./sbin/start-dfs.sh
可以通过webUI 登陆hdfs 管理页面
伪分布式读取的则是HDFS 上的数据。要使用HDFS,首先需要在HDFS 中创建用户目录:
./bin/hdfs dfs -mkdir -p /user/Hadoop
1、文件系统访问工具
2、ACL(access control level)往hdfs 中上传文件:
.\bin\hdfs dfs -put README.txt /user/hadoop hdfs 可以接受的命令行参数,图片如下:
网友评论