Hadoop基础

一、基础了解

1、Hadoop的优势

①高可靠性:Hadoop底层维护多个数据副本,所以即使是Hadoop某个计元素或存储出现故障,也不会导致数据的丢失。
②高扩展性:在集群间分配任务,可以方便的扩展数以千计的节点。
③高效性:Hadoop是并行工作。
④高容错:能够自动将失败的任务重新分配。

2、Hadoop的组成

在这里插入图片描述

3、HDFS架构

①NameNode(NN):存储文件的元数据,如文件名、文件的目录结构、文件属性、在每个文件的块列表和块所在的DataNode等。
②DataNode(DN):在本地文件系统存储文件的块数据,以及块数据的校验和。
③SecondaryNameNode(2NN):每隔一段时间,对NameNode元数据备份。

4、Yarn架构

在这里插入图片描述

5、MapReduce架构

分为Map和Reduce阶段。Map阶段并行处理数据的输入,Reduce阶段对Map的结构进行汇总。

二 、Hadoop环境的搭建

①配置虚拟机,并关闭防火墙。
②安装JDK,并配置环境变量。

vim  /etc/profile.d/my_env.sh
//添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

③安装Hadoop,并配置环境变量

vim /etc/profile

HADOOP_HOME=/opt/module/hadoop-3.1.3
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH JAVA_HOME HADOOP_HOME

随后source /etc/profile使环境变量生效。

hadoop的目录结构:

(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本

(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件

(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)

(4)sbin目录:存放启动或停止Hadoop相关服务的脚本

(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

三、Hadoop运行模式

1、本地运行模式

2、伪分布运行模式

1)配置HDFS集群
① 配置hadoop-env.sh

//Linux系统中获取JDK的安装路径:

echo $JAVA_HOME

/opt/module/jdk1.8.0_212

//修改JAVA_HOME 路径:

export JAVA_HOME=/opt/module/jdk1.8.0_212

②配置core-site.xml

<!-- 指定HDFS中NameNode的地址 -->

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://hadoop101:9820</value>

</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->

<property>

    <name>hadoop.tmp.dir</name>

    <value>/opt/module/hadoop-3.1.3/data/tmp</value>

</property>

③配置hdfs-site.xml

<!-- 指定HDFS副本的数量,默认为3-->

<property>

    <name>dfs.replication</name>

    <value>1</value>

</property>

2)启动HDFS集群

(a)格式化NameNode(第一次启动时格式化,以后就不要总格式化)

bin/hdfs namenode -format

注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和logs日志,然后再格式化NameNode。

(b)启动NameNode

bin/hdfs --daemon start namenode 

(c)启动DataNode

bin/hdfs --daemon start datanode 

web端查看HDFS文件系统:http://hadoop101:9870

3)配置Yarn
①配置yarn-site.xml

<!--Reducer获取数据的方式 -->
<property>

     <name>yarn.nodemanager.aux-services</name>

     <value>mapreduce_shuffle</value>

</property>

<!--指定YARN的ResourceManager的地址 -->

<property>

     <name>yarn.resourcemanager.hostname</name>

     <value>hadoop101</value>

</property>

<!--环境变量通过从NodeManagers的容器继承的环境属性, 对于mapreduce应用程序,除了默认值hadoop op_mapred_home应该被添加外。属性值还有  -->

<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>

②配置mapred-site.xml

<!-- 指定MR运行在YARN上-->

<property>

      <name>mapreduce.framework.name</name>

      <value>yarn</value>

</property>

4)启动Yarn

bin/yarn  --daemon start resourcemanager

bin/yarn  --daemon start nodemanager

Yarn在web端查看:http://hadoop101:8088
5)配置文件说明

Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。这里面的设置可以对默认的设置进行覆盖。

3、完全分布式运行模式

0)前提知识
scp–>安全拷贝
用法:

scp -r p d i r / pdir/ pdir/fname u s e r @ h a d o o p user@hadoop user@hadoophost: p d i r / pdir/ pdir/fname

命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
rsync–>远程同步工具

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

rsync -av p d i r / pdir/ pdir/fname u s e r @ h a d o o p user@hadoop user@hadoophost: p d i r / pdir/ pdir/fname

命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称

1)环境的搭建
①准备至少三台客户机,关闭防火墙
②安装JDK,Hadoop,并配置环境变量
③配置集群,规划如下
在这里插入图片描述
④配置hadoop-env.sh

//修改JAVA_HOME 路径:

export JAVA_HOME=/opt/module/jdk1.8.0_212

⑤配置core-site.xml

 <!-- 指定NameNode的地址 -->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://hadoop102:9820</value>
  
    </property>

<!-- 指定hadoop数据的存储目录  
官方配置文件中的配置项是hadoop.tmp.dir ,用来指定hadoop数据的存储目录,此次配置用的hadoop.data.dir是自己定义的变量, 因为在hdfs-site.xml中会使用此配置的值来具体指定namenode 和 datanode存储数据的目录 -->

<property>
       
	<name>hadoop.data.dir</name>
       
	<value>/opt/module/hadoop-3.1.3/data</value>

</property>

⑥配置hdfs-site.xml

 <!-- 指定NameNode数据的存储目录 -->

  <property>
   
	<name>dfs.namenode.name.dir</name>
  
	<value>file://${hadoop.data.dir}/name</value>

  </property>

 <!-- 指定Datanode数据的存储目录 --> 

  <property>   
	<name>dfs.datanode.data.dir</name>
   
	<value>file://${hadoop.data.dir}/data</value>
  </property>
   
   <!-- 指定SecondaryNameNode数据的存储目录 --> 

    <property>
   
	<name>dfs.namenode.checkpoint.dir</name>

        <value>file://${hadoop.data.dir}/namesecondary</value>

  </property>    
  
  <!--nn web端访问地址-->
<property>

    <name>dfs.namenode.http-address</name>

    <value>hadoop102:9870</value>

</property>

  <!--2nn web端访问地址-->

  <property>
   
	<name>dfs.namenode.secondary.http-address</name>

        <value>hadoop104:9868</value>

  </property>

⑦配置yarn-site.xml

 <property>
       
	<name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

</property>
     <!-- 指定ResourceManager的地址-->
    <property>
     
	<name>yarn.resourcemanager.hostname</name>

        <value>hadoop103</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>

⑧配置mapred-site.xml

<!—指定MapReduce程序运行在Yarn上 -->

  <property>   
	<name>mapreduce.framework.name</name>

        <value>yarn</value>

  </property>

⑨然后将此集群分发至hadoop103,Hadoop104
若节点较多,则全部启动困难,为此,需要进行群起。
2)SSH免密登录
正常情况下,ssh 另一台电脑ip,可以登录至另一台电脑,启动其NN,DN等,但是每次登录至其他节点需要输入密码,为此就有了ssh免密登录。原理如下:

在这里插入图片描述
①生成公钥和私钥

ssh-keygen  -t rsa

②将公钥拷贝到要免密登录的目标机器上

ssh-copy-id  hadoop102

ssh-copy-id  hadoop103

ssh-copy-id  hadoop104

在103,104节点也这样操作。
3)群起集群
①配置workers,设置集群都有谁。

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

hadoop102
hadoop103
hadoop104

②群起集群
若是第一次启动,则要在hadoop102,即namenode节点进行初始化。

hdfs namenode -format

③集群群起(群停)

//(1)启动HDFS
start-dfs.sh
//(2)在配置了ResourceManager的节点(hadoop103)启动YARN
start-yarn.sh    
 
//(3)整体启动/停止HDFS
start-dfs.sh/stop-dfs.sh
// (4)整体启动/停止YARN
start-yarn.sh/stop-yarn.sh
  

4)配置历史服务器
在mapred-site.xml中添加:

<!--历史服务器端地址 -->

<property>
   
    <name>mapreduce.jobhistory.address</name>

    <value>hadoop102:10020</value>

</property>

<!--历史服务器web端地址 -->
<property>
   
    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop102:19888</value>

</property>

然后将其分发至其他节点。
web端查看JobHistory:http://hadoop102:19888/jobhistory
5)配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
①在yarn-site.xml中添加:并分发到其他节点。

  <property>
       
	<name>yarn.log-aggregation-enable</name>

        <value>true</value>

    </property>

    <property>  
       
	<name>yarn.log.server.url</name>  
       
	<value>http://hadoop102:19888/jobhistory/logs</value>  

    </property>

    <property>
       
	<name>yarn.log-aggregation.retain-seconds</name>

        <value>604800</value>

</property>

6)集群时间同步
必须使用root用户操作。
①在所有节点关闭ntp服务和自启动

sudo systemctl top ntpd

sudo systemctl isable ntpd

②修改ntp配置文件

vim/etc/ntp.conf
//修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
restrict  192.168.1.0 mask 255.255.255.0 nomodify notrap
//修改2(集群在局域网中,不使用其他互联网上的时间)


#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst
//添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0

fudge 127.127.1.0 stratum 10

③修改/etc/sysconfig/ntpd 文件

vim /etc/sysconfig/ntpd
//增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes

④重新启动ntpd服务

systemctl start ntpd

⑤设置ntpd服务开机启动

systemctl enable ntpd

⑥在其他节点配置同步定时任务

//(1)在其他机器配置10分钟与时间服务器同步一次
crontab -e
//编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop102
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值