Hadoop教程

Hadoop

本文主要是介绍Hadoop,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Hadoop:

下载网址:https://archive.apache.org/dist/hadoop/common

什么是hadoop:用于数据存储和数据分析计算的分布式系统基础架构

创始人:Doug Cutting

组成

  • Hadoop HDFS:一个高可靠、高吞吐量的分布式系统文件

  • Hadoop MapReduce:一个分布式的离线并行计算框架

  • Hadoop YARN:作业调度与集群资源管理的框架

  • Hadoop Common:支持其他模块的工具模块

Yarn架构

  • NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

  • DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。

  • Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

Yarn架构

  • ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;

  • NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;

  • ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。

  • Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

MapReduce架构

MapReduce将计算过程分为两个阶段:

Map和Reduce

  • Map阶段并行处理输入数据

  • Reduce阶段对Map结果进行汇总

大数据技术生态体系

 

Hadoop安装搭建

准备工作:

1.设值静态IP

1 # 检查网卡配置
2 vim /etc/sysconfig/network-scripts/ifcfg-ens33
3 # 将网卡启动方式设置为none或者static
4 # 如果是dhcp 则每次重启都会重新分配IP
5 BOOTPROTO=none
6 或者
7 BOOTPROTO=STATIC
8 # 修改之后需要重启网络
9 systemctl restart network

2.修改主机名

1 # 查看当前主机名
2 hostname
3 # 修改主机名
4 hostnamectl set-hostname 主机名

3.关闭防火墙

1 # 关闭防火墙
2 systemctl stop firewalld
3 # 禁用防火墙的开机启动
4 systemctl disable firewalld
5 # 查看防火墙服务状态
6 systemctl status firewalldCOPY

4.安装JDK

  • 上传安装包到linuc服务器

   压缩包存放路径

/opt/java/tar
  • 解压安装包

   路径

/opt/java/modul

解压指令:

1  tar -zxvf hadoop-2.7.7.tar.gz -C /opt/java/modul
2  # tar命令用来解压tar类型的存档文件
3 # z 进行gzip格式文件的压缩或解压
4 # x 解开压缩包
5 # v 显示解压或压缩细节
6 # f 将文件解压到当前目录
7 # 使用mv将文件夹修改为更简短的名称
8 # 软件名称-软件版本

完全分布式搭建:

1.克隆虚拟机

配置环境变量:

# 可以在三个文件中配置环境变量
# 系统环境变量  /etc/profile
# 当前用户的环境变量  ~/.bashrc  ~/.bash_profile
  • 将服务器克隆为3台,并分别设置静态IP,分别设置主机名

    192.168.222.81

    192.168.222.82

    192.168.222.83

  • 设值IP和主机名映射

1 # Linux中使用/etc/hosts文件记录IP和主机名的映射
2 # 配置映射是为了将来访问其他机器时不需要记忆ip地址
3 # 配置映射 可以在所有的软件配置文件中使用主机名代替IP,将来IP改动时,只需要改动hosts文件,不需要改动软件配置文件
4 vim /etc/hosts
5 192.168.222.81  bd01
6 192.168.222.82  bd02
7 192.168.222.83  bd03
  • 设值SSH免密登录

 1 # 分布式程序中 集群之间需要进行大量的数据传输和通信,需要使用SSH协议进行远程连接,如果每次都需要验证密码,效率极差
 2 # 可以通过配置免密登录 实现集群内部通畅的通信
 3 # 1.移除之前的残留文件
 4 rm -rf ~/.ssh
 5 # 2.创建密钥文件
 6 ssh-keygen -t rsa
 7 # 3.分发密钥
 8 ssh-copy-id bd0801
 9 yes
10 密码
11 ssh-copy-id bd0802
12 yes
13 密码
14 ssh-copy-id bd0803
15 yes
16 密码

安装完全分布式HDFS服务

http://archive.apache.org/ apache组件下载

  • 关于版本:

    • 几乎所有的大数据组件,版本都有三组数字组成 x.y.z

    • x : 大版本,通常x不同的版本之间,API有差异,不互相兼容

    • y : 中版本,通常x相同y不同的版本之间,api相互兼容,会有少量的优化和重构

    • z : 小版本,通常x,y相同,z不同的版本之间,功能和性能完全一样,修复了一些紧急的漏洞,不要使用小版本为0的版本

  • 2.7.x是目前企业中使用的相对稳定版本,应用最广泛,与Spark兼容性优良

  • 2.6.x 和3.0.x也是企业中常见版本

修改配置文件

  • hadoop-env.sh

1 [root@bd0801 /]# cd opt/java
2 [root@bd0801 java]# cd modul
3 [root@bd0801 modul]# cd hadoop-2.7.7/
4 [root@bd0801 hadoop-2.7.7]# cd etc/hadoop/
5 [root@bd0801 hadoop]# cat hadoop-env.sh

设值java_home

export JAVA_HOME=/opt/java/modul/jdk1.8.0_291
  • core-site.xml(namenode)

 1 <configuration>
 2   <property>
 3 <!-- 设置Hadoop用来存储数据的目录,设置到Hadoop安装目
 4 录中 -->
 5  <name>hadoop.tmp.dir</name>
 6  <value>/opt/java/modul/hadoop-2.7.7/data</value>
 7 </property>
 8 <property>
 9 <!-- 设置HDFS使用的默认连接url -->
10  <name>fs.defaultFS</name>     <value>hdfs://bd0801:8020</value>
11 </property>
12 </configuration>
  • hdfs-site.xml(secondnamenode)

1 <configuration>
2 <property>
3  <!-- 配置SecondaryNameNode启动的机器 -->
4      <name>dfs.namenode.secondary.http-address</name>
5      <value>bd0803:50090</value>
6   </property>
7 
8 </configuration>
  • slaves

设置启动DataNode服务的节点

1 bd0801
2 bd0802
3 bd0803

分发安装包

scp:安全拷贝,可以实现服务器与服务器之间的数据拷贝

-r: 递归

1  cd modul
2 scp -r hadoop-2.7.7/ bd0802:/opt/java/modul/
3 scp -r hadoop-2.7.7/ bd0803:/opt/java/modul/
4 # r 递归发送文件夹
5 # q 静默发送 不显示细节
6 scp -rq 本地文件夹  目标主机:目标路径

配置环境变量

1 echo 'export HADOOP_HOME=/opt/java/modul/hadoop-2.7.7' >> /etc/profile
2 echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile
3 source /etc/profile

对Namenode进行格式化

hdfs namenode -format

注意:如果有修改core hdfs 文件,需要删除data 重新格式化

启动集群尝试操作

1 start-dfs.sh
2 [root@bd01 ~]# jps
3 24952 DataNode
4 24827 NameNode
5 [root@bd02 ~]# jps
6 5124 DataNode
7 [root@bd03 ~]# jps
8 20851 DataNode
9 20924 SecondaryNameNode
  • 访问NameNode的webUI

192.168.222.81:50070

面试题:

一:常用端口号

hadoop3.x

HDFS NameNode内部通常端口:8020 /9000 /9820

HDFS NameNode对用户的查询端口:9870

Yarn查看任务运行情况的:8088

历史服务器:19888

hadoop2.x

HDFS NameNode内部通常端口:8020 /9000

HDFS NameNode对用户的查询端口:50070

Yarn查看任务运行情况的:8088

历史服务器:19888

二:常用的配置文件

3.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml workers

2.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml slaves

这篇关于Hadoop的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!