大数据-2:Hadoop生态以及HDFS部署

文章目录

  • 1. Haoop简介
  • 2. 安装单机版Hadoop
  • 3. Hadoop运行
    • 3.1 独立运行/Local (Standalone) Mode
    • 3.2 伪分布式集群/Pseudo-Distributed Mode
    • 3.3 全分布式集群/Fully-Distributed Mode

1. Haoop简介

MFS作为分布式文件系统,有很强的灵活扩展性,常用于网盘等;但做数据挖掘,分析用户数据时,常用Hadoop生态下的HDFS文件系统;

  • HDFS起源于GFS,GFS为Google的分布式文件系统Google File System
  • MapReduce:Google的MapReduce开源分布式并行计算框架,演变为Hadoop MapReduce
  • BigTable:一个大型的分布式数据库,演变为Hbase

Hadoop包含3各主流版本:

  • Apache基金会Hadoop,原生版本,需要考虑不同软件兼容性,无UI界面
  • Cloudera版本,简称CDH
  • Hortonworks版本,简称HDP

Hadoop的框架最核心的设计就是:HDFS和MapReduce

  • HDFS为海量的数据提供了存储
  • MapReduce为海量的数据提供了计算

大数据技术生态体系:
大数据-2:Hadoop生态以及HDFS部署_第1张图片

Hadoop框架包括以下四个模块:

  • Hadoop Common:这些时其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。
  • Hadoop YARN:这是一个用于作业调度和集群资源管理的框架
  • Hadoop DIstributed File System(HDFS):分布式文件系统,提供对应用程序数据的高吞吐量访问
  • Hadoop MapReduce:这是基于YARN的用于并行处理大数据集的系统

2. 安装单机版Hadoop

Apache版本官网
新建一个虚拟机server11
新建一个用户hadoop并给予密码:useradd hadoopecho ***|passwd --stdin hadoop
首先在server11上准备安装文件:scp hadoop-3.2.1.tar.gz jdk-8u181-linux-x64.tar.gz server11:
放在hadoop主目录下并修改拥有者为hadoop,切换hadoop用户:
解压:tar zxf jdk-8u181-linux-x64.tar.gz
解压完成后的为二进制程序,可以直接调用,做软链接至java:ln -s jdk1.8.0_181/ java
大数据-2:Hadoop生态以及HDFS部署_第2张图片
同样解压软链接:tar zxf hadoop-3.2.1.tar.gzln -s hadoop-3.2.1 hadoop
进入hadoop配置目录:cd /home/hadoop/hadoop/etc/hadoop
查看环境脚本,告知其java路径和hadoop路径:vim hadoop-env.sh
大数据-2:Hadoop生态以及HDFS部署_第3张图片

3. Hadoop运行

Hadoop集群分为3中种模式:

  • 本地(独立模式)
  • 伪分布式集群
  • 全分布式集群

3.1 独立运行/Local (Standalone) Mode

/home/hadoop/hadoop目录下执行bin/hadoop成功即可证明调用jdk成功:

大数据-2:Hadoop生态以及HDFS部署_第4张图片
接下来测试是否能进行计算:

$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
$ cat output/*

在此导入了部分数据并进行过滤操作,并将结果输出至output文件夹:
请添加图片描述

3.2 伪分布式集群/Pseudo-Distributed Mode

首先需要进行配置,添加如下信息:vim /home/hadoop/hadoop/etc/hadoop/core-site.xml
大数据-2:Hadoop生态以及HDFS部署_第5张图片
继续vim hdfs-site.xml,其中副本数由于是伪分布式设置为1
大数据-2:Hadoop生态以及HDFS部署_第6张图片
在通过ssh-keygen作免密并传给localhost:ssh-copy-id local host
其中,配置文件中的workers文件负责管理节点,伪分布式也会以ssh方式登陆workers中的节点:
请添加图片描述
此时,启动方式与单节点不同,伪分布式也要按照分布式的启动方法:
首先对HDFS节点进行格式化bin/hdfs namenode -format,默认的数据目录会在/tmp/下,以用户名命名;
再调用sbin/start-dfs.sh启动分布式文件系统的脚本:
请添加图片描述
在此需要先添加一个环境变量:vim .bash_profile,并更新source .bash_profile
大数据-2:Hadoop生态以及HDFS部署_第7张图片
此时可以看到开启的java进程:
大数据-2:Hadoop生态以及HDFS部署_第8张图片
namenode挂了以后secondnamenode可以接管,snn周期性清理数据并备份;namenode存储了整个分布式文件系统的元数据(文件分多个块,在哪个目录)
此时,开启了9870端口,可以通过浏览器查看分布式文件系统的状态:
大数据-2:Hadoop生态以及HDFS部署_第9张图片

创建一个hdfs用户目录:bin/hdfs dfs -mkdir /user/,再创建一个用户:bin/hdfs dfs -mkdir /user/hadoop
大数据-2:Hadoop生态以及HDFS部署_第10张图片
向用户家目录上传input数据:bin/hdfs dfs -put input
大数据-2:Hadoop生态以及HDFS部署_第11张图片
此时,继续可以继续执行其他的计算功能;
在jar包处回车可看到具备的功能:
大数据-2:Hadoop生态以及HDFS部署_第12张图片
此时,数据来源不是本地input文件目录,而是来源于分布式文件系统,删除本地input目录不影响:
输出目录也可以选择为分布式文件系统:bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount input output
大数据-2:Hadoop生态以及HDFS部署_第13张图片
可以看到,每个block是128M,mfs为64M
当然用命令行也可看到:bin/hdfs dfs -ls
请添加图片描述
从分布式文件系统下载至本地查看:bin/hdfs dfs -get output
删除hdfs中的output文件目录:bin/hdfs dfs -rm -r output
图形化页面里默认是不可删除的,因为没有权限安全设置,若需要可以设置

3.3 全分布式集群/Fully-Distributed Mode

  • 首先执行sbin/stop-dfs.sh停止server11上的伪分布式集群,并删除上一节/tmp/下的临时数据;

  • 并新建server12,server13两个虚拟机,并同样新建hadoop的用户并设置密码;

  • 由于全分布式集群要求所有节点上的设置相同,保持文件系统的同步。在此采用NFS实现不同节点文件同步,在各个节点上安装nfs工具yum install -y nfs-utils
    在server11上设置挂载参数:
    大数据-2:Hadoop生态以及HDFS部署_第14张图片
    在server11上启动nfs:systemctl start nfs
    在server12,13上挂载:mount 172.25.38.11:/home/hadoop/ /home/hadoop/
    此时,即实现了数据同步

  • 修改配置文件:
    vim core-site.xml
    大数据-2:Hadoop生态以及HDFS部署_第15张图片
    vim workers
    请添加图片描述
    修改数据保存为2份:vim hdfs-site.xml
    大数据-2:Hadoop生态以及HDFS部署_第16张图片

  • 重新格式化namenode:bin/hdfs namenode -format

  • 启动dfs:sbin/start-dfs.sh,在启动datanode时是以免密的方式进到对应节点启动相应进程

此时即完成了全分布式集群的部署。
查看节点信息:bin/hdfs dfsadmin -report
大数据-2:Hadoop生态以及HDFS部署_第17张图片

测试,在nn上,dd if=/dev/zero of=bigfile bs=1M count=200
请添加图片描述
创建HDFS用户目录:bin/hdfs dfs -mkdir /userbin/hdfs dfs -mkdir /user/hadoop
上传:bin/hdfs dfs -put bigfile
请添加图片描述
可以看到分成了两个block:
大数据-2:Hadoop生态以及HDFS部署_第18张图片

在线热添加节点:
注意添加解析,建立新用户,安装nfs-utils,挂载共享资源
请添加图片描述
进入nn,在workers中添加新worker,
在server14上启动dn:bin/hdfs --daemon start datanode
可以看到,加入成功:
大数据-2:Hadoop生态以及HDFS部署_第19张图片
dn上传时,如果数据要备份多份,首先优先在自身节点上备份一个,再在其他节点上备份一个。

你可能感兴趣的:(hadoop,big,data)