Hadoop-1-Hadoop基础

文章介绍了大数据的4V特征,重点讲解了Hadoop在大数据处理中的作用,包括Hadoop的发行版、版本演变历史以及其核心组件HDFS、MapReduce和YARN。此外,详细阐述了如何在Linux环境中进行Hadoop的伪分布和分布式集群安装,包括设置静态IP、主机名、SSH无密码登录、JDK安装以及配置Hadoop环境等步骤。
摘要由CSDN通过智能技术生成

Java数据类型与Hadoop数据类型的对应关系

JavaHadoop意义
LongLongWritable整数型
StringText字符串

1. 走进大数据

大数据4V特征

  1. Volume(量大):存储量大,计算量大
  2. Variety(多样):来源多,格式多
  3. Velocity(快速):数据增长速度快,处理速度要求快
  4. Value(价值):价值密度低,和数据总量的大小成反比

2. Hadoop

2.1 什么是Hadoop

我们生活在一个数据大爆炸的时代,数据飞快的增长,急需解决海量数据的存储和计算问题

Hadoop适合海量数据分布式存储分布式计算

2.2 Hadoop发行版介绍

目前Hadoop已经演变为大数据的代名词,形成了一套完整的大数据生态系统,所以针对Hadoop就出现了很多发行版

Apache Hadoop:官方版本,开源

Cloudera Hadoop(CDH):商业版本,对官方版本做了一些优化,提供收费技术支持,提供界面操作,方便集群运维管理

HortonWorks(HDP):开源,提供界面操作,方便运维管理

注意:目前HDP已经被CDH收购,都属于一个公司的产品

建议在实际工作中搭建大数据平台时选择CDH或者HDP,方便运维管理。

2.3 Hadoop版本演变历史

Hadoop1.x ——Hadoop2.x——Hadoop3.x

image-20211130113730054

Hadoop3.x的细节优化

  • Java改为支持8及以上

  • HDFS支持纠删码

  • HDFS支持多NameNode

  • MR任务级本地优化

  • 多重服务默认端口变更

2.4 Hadoop三大核心组件介绍

Hadoop主要包括三大组件:HDFS+MapReduce+YARN

image-20211130114234274

  • HDFS负责海量数据的分布式存储
  • MapReduce是一个计算模型,负责海量数据的分布式计算
  • YARN主要负责集群资源的管理和调度

2.5 Hadoop集群安装部署

  • 伪分布集群安装:使用一台Linux机器【建议在后续学习阶段使用伪分布集群】
  • 分布式集群安装:使用三台Linux机器

2.5.1 伪分布集群

image-20211130114644684

2.5.1.1 设置静态IP
# 进入网口目录
[root@master network-scripts]# cd /etc/sysconfig/network-scripts/
# 编辑ifcfg-ens33文件
[root@master network-scripts]# vim ifcfg-ens33
# 修改文件内容为
            TYPE=Ethernet
            PROXY_METHOD=none
            BROWSER_ONLY=no
            BOOTPROTO=static  # 设置静态IP
            
            DEFROUTE=yes
            IPV4_FAILURE_FATAL=no
            IPV6INIT=yes
            IPV6_AUTOCONF=yes
            IPV6_DEFROUTE=yes
            IPV6_FAILURE_FATAL=no
            IPV6_ADDR_GEN_MODE=stable-privacy
            NAME=ens33
            UUID=ff5bf7ab-9679-4a06-bfc6-e2c91ed99c06
            DEVICE=ens33
            ONBOOT=yes  # 是否开机启用

            IPADDR=192.168.128.130  # IP地址
            GATEWAY=192.168.128.2  # 网关
            DNS1=192.168.128.2  # DNS服务器地址
2.5.1.2 设置主机名
# 编辑hostname文件
[root@master network-scripts]# vim /etc/hostname 
# 文件内容即为主机名,例如:
mater
# 重启就生效
2.5.1.3 关闭防火墙
# 查看防火墙状态
[root@master network-scripts]# systemctl status firewalld
# 永久关闭防火墙
[root@master network-scripts]# systemctl disable firewalld.service  
2.5.1.4 ssh无密码登录
ssh-keygen -t rsa
cp ~/.ssh/xxx.pub ~/.ssh/authorized_keys

在目录~/.ssh/下会生成3个文件,其中.pub结尾的文件为ssh公钥,将该文件复制到需要远程登录机器的

~/.ssh/authorized_keys该目录下。

2.5.1.5 安装JDK
# 解压
tar -xzvf jdk-8u202-linux-x64.tar.gz
# 修改名字
mv jdk1.8.0_202/ jdk1.8

设置环境变量

[root@master network-scripts]# vim /etc/profile
# 在底部加上
export JAVA_HOME=/data/soft/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH
# 重新载入profile文件
source /etc/profile

查看java是否安装成功

[root@slave1 soft]# java -version
    java version "1.8.0_202"
    Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
    Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
2.5.1.6 安装Hadoop
  • bin:包含操作HDFS和YARN的一些脚本。
  • sbin:包含启动和停止集群中的组件。

bin和sbin目录需要配置到环境变量中。

  • etc/hadoop:hadoop中的配置文件,安装hadoop需要修改该目录下的文件。

    1 . hadoop-env.sh

export JAVA_HOME=/data/soft/jdk1.8
export Hadoop_LOG_DIR=/data/hadoop_repo/logs/hadoop

​ 2 . core_site.xml

<configuration>
    <property>
    	<name>fs.defaultFS</name>
    	<value>hdfs://master:9000</value>
    </property>
    <property>
    	<name>hadoop.tmp.dir</name>
    	<value>/data/hadoop_repo</value>
    </property>
</configuration>

​ 3 . hdfs-site.xml

<configuration>
    <property>
    	<name>dfs.replication</name>
    	<value>1</value>  #只有一台集群
    </property>
</configuration>

​ 4 . mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

​ 5 . yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
           				   				        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

​ 6 . workers

master
2.5.1.7 格式化HDFS文件系统
bin/hdfs namenode -format  # 只能执行一次,类似于格式化硬盘,如果要重装需要先删掉/data/hadoop_repo这个目录
2.5.1.8 启动伪分布集群
sbin/start-all.sh  # 启动所有服务

消除错误信息(缺失很多用户信息)

​ 1 . start-dfs.sh

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

​ 2 . stop-dfs.sh

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

​ 3 . start-yarn.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

​ 4 . stop-yarn.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

重新启动集群

sbin/start-all.sh  # 启动所有服务

输入jps查看启动的服务

jps
    14560 ResourceManager
    15700 Jps
    14058 DataNode
    14282 SecondaryNameNode
    14714 NodeManager
    13885 NameNode

如果看到6大组件都启动成功说明,集群启动成功。

此时在本地主机内输入http://master:8088/cluster 和 http://master:9870/dfshealth.html#tab-overview 可查看hadoop中的YEAR和HDFS服务页面。

设置主机名访问

修改主机hosts文件,加上

192.168.128.130 master

2.5.1.9 关闭伪分布集群
[root@master hadoop-3.2.0]# sbin/stop-all.sh 
Stopping namenodes on [master]
上一次登录:二 1130 15:02:43 CST 2021192.168.128.1pts/2 上
Stopping datanodes
上一次登录:二 1130 15:47:32 CST 2021pts/1 上
Stopping secondary namenodes [master]
上一次登录:二 1130 15:47:34 CST 2021pts/1 上
Stopping nodemanagers
上一次登录:二 1130 15:47:36 CST 2021pts/1 上
Stopping resourcemanager
上一次登录:二 1130 15:47:38 CST 2021pts/1 上
[root@master hadoop-3.2.0]# jps
16638 Jps

2.5.2 分布式集群

所有机器完成2.5.1.1~2.5.1.5步骤。

也可以一台机器完成后再克隆2台,修改hostname和ip即可。

2.5.2.1 **设置静态IP
# 进入网口目录
[root@master network-scripts]# cd /etc/sysconfig/network-scripts/
# 编辑ifcfg-ens33文件
[root@master network-scripts]# vim ifcfg-ens33
# 修改文件内容为
            TYPE=Ethernet
            PROXY_METHOD=none
            BROWSER_ONLY=no
            BOOTPROTO=static  # 设置静态IP
            
            DEFROUTE=yes
            IPV4_FAILURE_FATAL=no
            IPV6INIT=yes
            IPV6_AUTOCONF=yes
            IPV6_DEFROUTE=yes
            IPV6_FAILURE_FATAL=no
            IPV6_ADDR_GEN_MODE=stable-privacy
            NAME=ens33
            UUID=ff5bf7ab-9679-4a06-bfc6-e2c91ed99c06
            DEVICE=ens33
            ONBOOT=yes  # 是否开机启用

            IPADDR=192.168.128.130  # IP地址,不同机器IP地址不能相同
            GATEWAY=192.168.128.2  # 网关
            DNS1=192.168.128.2  # DNS服务器地址
2.5.2.2 **设置主机名
# 编辑hostname文件
[root@master network-scripts]# vim /etc/hostname 
# 文件内容即为主机名,例如:
mater
# 重启就生效
2.5.2.3 **关闭防火墙
# 查看防火墙状态
[root@master network-scripts]# systemctl status firewalld
# 永久关闭防火墙
[root@master network-scripts]# systemctl disable firewalld
2.5.2.4 **ssh无密码登录
ssh-keygen -t rsa

在目录~/.ssh/下会生成3个文件,其中.pub结尾的文件为ssh公钥,将该文件复制到需要远程登录机器的

~/.ssh/authorized_keys该目录下。

2.5.2.5 **安装JDK
# 解压
tar -xzvf jdk-8u202-linux-x64.tar.gz
# 修改名字
mv jdk1.8.0_202/ jdk1.8

设置环境变量

export JAVA_HOME=/data/soft/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH

查看java是否安装成功

[root@slave1 soft]# java -version
    java version "1.8.0_202"
    Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
    Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

2.5.2.6 **修改/etc/hosts文件

作用:使得机器之间能够相互识别

192.168.128.130 master
192.168.128.131 slave1
192.168.128.132 slave2
192.168.128.1 win
2.5.2.7 **同步时间

使得三台机器时间一致,避免在工作的时候出现问题(三台机器都要做)

# 下载ntpdate命令
yum install -y ntpdate

同步时间服务器(ntp.sjtu.edu.cn)

ntpdate -u ntp.sjtu.edu.cn

添加到定时任务,使得每次开启集群自动同步时间

vim /etc/crontab
	* * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
2.5.2.8 主节点无密码登录从节点

使用

scp工具将主节点的公钥信息发送给从节点

scp ~/.ssh/authorized_keys slave1:~/
scp ~/.ssh/authorized_keys slave2:~/

然后进入从节点将主节点的公钥追加到自己公钥后面

[root@slave1 ~]# cat authorized_keys >> ~/.ssh/authorized_keys 
[root@slave2 ~]# cat authorized_keys >> ~/.ssh/authorized_keys 

实现无密码登录

[root@master /]# ssh slave1
Last login: Tue Nov 30 17:20:35 2021 from master
[root@slave1 ~]# exit
登出
Connection to slave1 closed.
[root@master /]# ssh slave2
Last login: Tue Nov 30 17:17:54 2021 from master
[root@slave2 ~]# 
2.5.2.9 hadoop安装
  • 1 . hadoop-env.sh
export JAVA_HOME=/data/soft/jdk1.8
export Hadoop_LOG_DIR=/data/hadoop_repo/logs/hadoop

​ 2 . core_site.xml

<configuration>
    <property>
    	<name>fs.defaultFS</name>
    	<value>hdfs://master:9000</value>
    </property>
    <property>
    	<name>hadoop.tmp.dir</name>
    	<value>/data/hadoop_repo</value>
    </property>
</configuration>

​ 3 . hdfs-site.xml

<configuration>
    <property>
    	<name>dfs.replication</name>
    	<value>2</value>  #多台机器
    </property>
    <property>
    	<name>dfs.namenode.secondary.http-address</name>
    	<value>master:50090</value>
    </property>
</configuration>

​ 4 . mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

​ 5 . yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
           				   				        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
     <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
</configuration>

​ 6 . workers

slave1
slave2
2.5.2.10 修改分布式集群启动脚本

消除错误信息(缺失很多用户信息)

​ 1 . start-dfs.sh

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

​ 2 . stop-dfs.sh

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

​ 3 . start-yarn.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

​ 4 . stop-yarn.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
2.5.2.11 将修改好的hadoop文件发送给从节点
[root@master soft]# scp -rq hadoop-3.2.0 slave1:/data/soft/
[root@master soft]# scp -rq hadoop-3.2.0 slave2:/data/soft/
2.5.2.12 格式化HDFS文件系统
bin/hdfs namenode -format  # 只能执行一次,类似于格式化硬盘,如果要重装需要先删掉/data/hadoop_repo这个目录
2.5.2.13 启动hadoop

只需要在主节点中运行下面代码即可

[root@master hadoop-3.2.0]# sbin/start-all.sh 
2.5.2.14 Hadoop的客户端节点
  • 在实际工作中不建议直接连接集群中的节点来操作集群,直接把集群中的节点暴露给普通开发人员是不安全的
  • 建议在业务机器上安装Hadoop,这样就可以在业务机器上操作Hadoop集群了,此机器就被称为是Hadoop的客户端节点

image-20211130180735050

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值