目录:

  1. Hadoop简介
  2. Hadoop架构
  3. Hadoop目录说明
  4. Hadoop文件系统HDFS介绍
  5. Hadoop环境搭建:伪分布式模式
  6. Hadoop修改存储路径和免密
  7. web界面访问HDFS与java操作HDFS

一.Hadoop简介

请参考自己下载的Hadoop版本对应的文档:Hadoop快速入门中文文档

1.Hadoop的由来

Hadoop中文界面 hadoop中文文档_大数据


Hadoop中文界面 hadoop中文文档_HDFS_02


 硬盘和服务器的关系:一个服务器可以有多个硬盘,就像抽屉一样,拉开一个个抽屉,将硬盘放进去

Hadoop中文界面 hadoop中文文档_大数据_03

2.简介

  1. 官网:http://hadoop.apache.org/
  2. Hadoop是一个分布式系统基础架构,有Apache基金会开发。用户可以不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
  3. Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了储存,MapReduce为海量的数据提供了计算。
  4. Hadoop可运行于一般的商用服务器上,具有高容错、高可靠性、高扩展性等特点
    特别适合写一次,读多次的场景
  5. 适合
  1. 大规模数据
  2. 流式数据(写一次,读多次)
  3. 商用硬件(一般硬件)
  1. 不适合
  1. 低延时的数据访问
  2. 大量的小文件
  3. 频繁修改文件(基本就是写1次)

二.Hadoop架构

Hadoop中文界面 hadoop中文文档_Hadoop中文界面_04

  • HDFS: 分布式文件存储
  • YARN: 分布式资源管理
  • MapReduce: 分布式计算
  • Others: 利用YARN的资源管理功能实现其他的数据处理方式
  • 内部各个节点基本都是采用Master-Woker架构

三.Hadoop目录说明

Hadoop中文界面 hadoop中文文档_hadoop_05

  • bin:Hadoop最基本的管理脚本和使用脚本,这些脚本是sbin目录下管理脚本的基础实现,用户可以用这些脚本管理和使用Hadoop。
  • etc:Hadoop配置文件所在的目录,包括core-site.xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的文件。
  • include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是C++定义的,通常用于C++程序访问HDFS或者变成MR程序。
  • lib:该目录提供了对外编程的静态库和动态库,与include目录下的头文件结合使用。
  • libexec:各个服务所对应你的shell配置文件所在目录,可用于配置日志输出目录、启动参数(比如JVM参数)等基本信息。
  • sbin:Hadoop管理脚本所在目录,主要包括HDFS和YARN中各类服务的启动/关闭脚本。
  • share:Hadoop各个模块编译后的jar包所在目录。

四.HDFS介绍

1.Hadoop和HDFS的关系:

  1. HDFS(Hadoop Distributed File System)Hadoop分布式文件系统
  2. 对外部客户机而言,HDFS就像一个传统的分组文件系统,可以创建、删除、移动或重命名文件等等。很多时候,我们就叫它DFS(Distributed File System)

Hadoop中文界面 hadoop中文文档_大数据_06


Hadoop中文界面 hadoop中文文档_HDFS_07

五.Hadoop环境搭建

Hadoop中文界面 hadoop中文文档_大数据_08


步骤:

  1. 安装虚拟机
  2. 安装jdk
  3. 安装Hadoop 
  1. Hadoop的安装模式
  1. 单节点安装
    所有服务运行在一个JVM中,适合调试、单元测试。
    只能本地电脑使用,外部人不能使用。
  2. 伪集群
    所有服务运行在一台机器中,每个服务都在独立的JVM中,适合做简单、抽样测试。
    可以对外提供入口、出口地址,外部的人可以通过这个配置访问hadoop,但是只有一台服务器。所有的服务全部都在一台服务器当中。
  3. 多节点集群
    服务运行在不同的机器中,适合生产环境。
    需要提供一个入口、出口地址。但是有多台服务器同时存在。服务可以分布到各台主机上。外部的人,也是通过统一的配置来访问。
  4. 问题:地址,我们在进行web项目测试的时候,比如:http://192.168.200.10:8080 这就是一个地址,它由
    http:协议,192.168.200.10 ip,8080:端口 组成,那么hadoop所需要提供的地址是怎么样的呢?
    hadoop的地址:hdfs://主机名:9000     (一定是主机名,而不是ip,具体见hadoop安装的3.2配制Hadoop的入口和出口)
  1. Hadoop安装(linux下安装)  
  1. 上传tar.gz的文件
  2. 解压
  3. 配置
  1. 第一步:关联jdk
  2. 第二步:配置hadoop的入口、出口
  3. 第三步:设置hdfs的副本数

    什么是副本:
  1. 第四步:启动

六.Hadoop修改存储路径和免密

  1. 修改储存路径
  2. 设置免密
  1. 免密的原因
  2. 加密分类
  3. 免密操作
  4. 实例

七.界面访问hdfs与java操作HDFS

1.web界面访问hdfs

Hadoop中文界面 hadoop中文文档_Hadoop_09

2.Java操作HDFS
示例:Java 将 hdfs:192.168.200.10:9000/user/yiguang/aaa.txt,复制存储在windows中e:/

  1. 在HDFS中创建目录user/yiguang/,并在其目录下创建文件aaa.txt
#第一步:在hdfs中创建文件目录/user/yiguang
[root@kd01 ~]# hdfs dfs -mkdir /user
[root@kd01 ~]# hdfs dfs -mkdir /user/yiguang

#第二步:创建/test/aaa.txt文件,写入的内容为:我们一起学习hadoop。
[root@kd01 test]# touch aaa.txt
[root@kd01 /]# hdfs dfs -cat /aaa.txt
我们一起学习hadoop。

#第三步:将aaa.txt上传到hdfs中
[root@kd01 /]# hdfs dfs -put /test/aaa.txt hdfs://kd01:9000/user/yiguang/
  1. 创建maven项目
  2. 加入以下pom依赖:注意版本对应
<dependencies>
	  <dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-hdfs</artifactId>
	    <version>2.7.3</version>
	  </dependency>
	  <dependency>
	  	<groupId>org.apache.hadoop</groupId>
    	<artifactId>hadoop-common</artifactId>
    	<version>2.7.3</version>
	  </dependency>
	  <dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-client</artifactId>
	    <version>2.7.3</version>
	  </dependency>
   </dependencies>
  1. 编写代码
package test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;

import org.apache.commons.compress.utils.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HadoopTest {
	public static void main(String[] args) throws IOException {
		//1.连接
		FileSystem fs=FileSystem.get(URI.create("hdfs://192.168.200.10:9000"), new Configuration());
		//2.拿数据
		FSDataInputStream fsd=fs.open(new Path("/user/yiguang/aaa.txt"));
		//3.处理
		FileOutputStream fos=new FileOutputStream("e://bbb.txt");
		//4.提供了一个工具类
		IOUtils.copy(fsd, fos ,4096);
		//5.关闭
		fos.close();
		fsd.close();
		fs.close();
		
	}
}
  1. 运行,查看

注意:问题补充:在上述内容操作过程中需要注意的问题

Hadoop中文界面 hadoop中文文档_大数据_10


Hadoop中文界面 hadoop中文文档_Hadoop_11