hadoop集群配置

本文围绕Hadoop高可用集群部署展开,先介绍大数据概念及应用,阐述Hadoop三个核心组件,分析HDFS整体运行机制。接着详细说明安装Hadoop集群的步骤,包括安装JDK、Hadoop,编写多个配置文件,配置集群节点,以及HA集群初始化、启动和查看高可用状态等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hadoop高可用集群部署

 

 

 

 

目录

一、hadoop简介... 2

1.什么是大数据... 2

2.什么是hadoop. 2

3.hdfs整体运行机制... 3

二、安装hadoop集群... 3

1.安装jdk. 4

2.安装hadoop. 4

3.编写core-site.xml配置文件... 4

4.编写hadoop-env.sh配置文件... 5

5.编写hdfs-site.xml配置文件... 6

6.编写mapred-site.xml配置文件... 8

7.编写yarn-site.xml配置文件... 9

8.配置集群节点... 10

9. HA集群初始化步骤... 11

10.单进程启动方式... 11

11.查看NN和RM高可用状态... 11

 

 

 

 

一、hadoop简介

1.什么是大数据

基本概念

在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经无法胜任,需求催生技术,一套用来处理海量数据的软件工具应运而生,这就是大数据!

 

换个角度说,大数据是:

有海量的数据

有对海量数据进行挖掘的需求

有对海量数据进行挖掘的软件工具(hadoop、spark、storm、flink、tez、impala......)

 

 

 

大数据在现实生活中的具体应用

电商推荐系统:基于海量的浏览行为、购物行为数据,进行大量的算法模型的运算,得出各类推荐结论,以供电商网站页面来为用户进行商品推荐

 

 

精准广告推送系统:基于海量的互联网用户的各类数据,统计分析,进行用户画像(得到用户的各种属性标签),然后可以为广告主进行有针对性的精准的广告投放

 

 

 

 

2.什么是hadoop

hadoop中有3个核心组件:

分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上

分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算

分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源

 

 

 

3.hdfs整体运行机制

hdfs:分布式文件系统

hdfs有着文件系统共同的特征:

有目录结构,顶层目录是:  /

系统中存放的就是文件

系统可以提供对文件的:创建、删除、修改、查看、移动等功能

 

 

hdfs跟普通的单机文件系统有区别:

单机文件系统中存放的文件,是在一台机器的操作系统中

hdfs的文件系统会横跨N多的机器

单机文件系统中存放的文件,是在一台机器的磁盘上

hdfs文件系统中存放的文件,是落在n多机器的本地单机文件系统中(hdfs是一个基于linux本地文件系统之上的文件系统)

 

hdfs的工作机制:

客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户端决定的>

 

 

一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node)

 

3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)

 

 

综述:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!

 

 

二、安装hadoop集群

 

1.安装jdk

 

#tar zxvf jdk-8u171-linux-x64.tar.gz                      //解压jdk

#mv jdk1.8.0_171/ /home/hadoop/app/jdk1.8              //复制文件并重命名jdk1.8

export JAVA_HOME=/home/hadoop/app/jdk1.8

export JRE_HOME=/home/hadoop/app/jdk1.8/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib  //jdk环境变量

#java -version                                        //查看jdk版本

 

2.安装hadoop

 

# tar zxvf hadoop-2.7.6.tar.gz                                     //解压hadoop

#mv hadoop-2.7.6  /home/hadoop/app/hadoop2.7   //复制文件并重命名hadoop2.7

export HADOOP_HOME=/home/hadoop/app/hadoop2.7   //hadoop环境变量

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"             

 

 

 

3.编写core-site.xml配置文件

<configuration>

<property>

    <name>hadoop.temp.dir</name>

    <value>/home/hadoop/data/tmp</value>

  </property>

  <property>

    <name>fs.defaultFS</name>

    <value>hdfs://myha01</value>   

  </property>

   <property>

         <name>ha.zookeeper.quorum</name>

         <value>cyjf06:2181,cyjf07:2181,cyjf08:2181</value>

   </property>

   <property>

         <name>ha.zookeeper.session-timeout.ms</name>

         <value>1000</value>

         <description>ms</description>

    </property>

 

<!-- eclipse连接hive 的配置-->

<property>

  <name>hadoop.proxyuser.root.hosts</name>

  <value>*</value>

 </property>

 <property>

  <name>hadoop.proxyuser.root.groups</name>

  <value>*</value>

</property>

</configuration>

 

 

 

 

4.编写hadoop-env.sh配置文件

 

 

 

export JAVA_HOME=/home/hadoop/app/jdk1.8

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

 

for f in $HADOOP_HOME/contrib/capacity-scheduler/*.jar; do

  if [ "$HADOOP_CLASSPATH" ]; then

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f

  else

    export HADOOP_CLASSPATH=$f

  fi

done

 

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"

export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS"

export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS"

export HADOOP_SECONDARYNAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_SECONDARYNAMENODE_OPTS"

export HADOOP_NFS3_OPTS="$HADOOP_NFS3_OPTS"

export HADOOP_PORTMAP_OPTS="-Xmx512m $HADOOP_PORTMAP_OPTS"

export HADOOP_CLIENT_OPTS="-Xmx512m $HADOOP_CLIENT_OPTS"

export HADOOP_SECURE_DN_USER=${HADOOP_SECURE_DN_USER}

export HADOOP_SECURE_DN_LOG_DIR=${HADOOP_LOG_DIR}/${HADOOP_HDFS_USER}

export HADOOP_PID_DIR=${HADOOP_PID_DIR}

export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}

export HADOOP_IDENT_STRING=$USER

 

5.编写hdfs-site.xml配置文件

 

<configuration>

 <property>

    <name>dfs:replication</name>

    <value>3</value>

  </property>

  <property>

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

    <value>/home/hadoop/app/name</value>

  </property>

  <property>

    <name>dfs.datanode.data.dir</name>

    <value>/home/hadoop/app/data</value>

  </property>

 

   <property>

      <name>dfs.webhdfs.enabled</name>

      <value>true</value>

    </property>

 

 

   <property>

        <name>dfs.nameservices</name>

          <value>myha01</value>

      </property>

<!-- myha01下面有两个NameNode,分别是nn1,nn2 -->

      <property>

          <name>dfs.ha.namenodes.myha01</name>

          <value>nn1,nn2</value>

      </property>

 

      <!-- nn1的RPC通信地址 -->

      <property>

         <name>dfs.namenode.rpc-address.myha01.nn1</name>

          <value>cyjf01:9000</value>

      </property>

 

      <!-- nn1的http通信地址 -->

       <property>

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

          <value>cyjf01:50070</value>

      </property>

 

      <!-- nn2的RPC通信地址 -->

      <property>

          <name>dfs.namenode.rpc-address.myha01.nn2</name>

          <value>cyjf02:9000</value>

      </property>

<!-- nn2的http通信地址 -->

      <property>

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

          <value>cyjf02:50070</value>

      </property>

 

      <property>

          <name>dfs.namenode.shared.edits.dir</name>

          <value>qjournal://cyjf06:8485;cyjf07:8485;cyjf08:8485/myha01</value>

      </property>

 

       <property>

          <name>dfs.journalnode.edits.dir</name>

          <value>/home/hadoop/app/journaldata</value>

      </property>

 

      <!-- 开启NameNode失败自动切换 -->

     <property>

          <name>dfs.ha.automatic-failover.enabled</name>

          <value>true</value>

      </property>

<!-- 配置失败自动切换实现方式 -->

      <property>

          <name>dfs.client.failover.proxy.provider.myha01</name>

          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

      </property>

      <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->

      <property>

          <name>dfs.ha.fencing.methods</name>

          <value>

             sshfence

             shell(/bin/true)

         </value>

     </property>

 

     <!-- 使用sshfence隔离机制时需要ssh免登陆 -->

     <property>

         <name>dfs.ha.fencing.ssh.private-key-files</name>

         <value>/home/hadoop/.ssh/id_rsa</value>

     </property>

<!-- 配置sshfence隔离机制超时时间 -->

     <property>

         <name>dfs.ha.fencing.ssh.connect-timeout</name>

         <value>30000</value>

     </property>

 

      <property>

         <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>

         <value>60000</value>

     </property>

</configuration>

 

6.编写mapred-site.xml配置文件

 

<configuration>

<property>

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

       <value>yarn</value>

</property>

 <property>

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

      <value>cyjf01:10020</value>

     </property>

 

     <!-- 任务历史服务器的web地址 -->

     <property>

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

         <value>cyjf01:19888</value>

     </property>

 

</configuration>

 

7.编写yarn-site.xml配置文件

 

 

<configuration>

     <!-- 开启RM高可用 -->

      <property>

          <name>yarn.resourcemanager.ha.enabled</name>

          <value>true</value>

      </property>

 

      <!-- 指定RM的cluster id -->

      <property>

         <name>yarn.resourcemanager.cluster-id</name>

         <value>yrc</value>

     </property>

 

     <!-- 指定RM的名字 -->

     <property>

         <name>yarn.resourcemanager.ha.rm-ids</name>

         <value>rm1,rm2</value>

     </property>

      <!-- 分别指定RM的地址 -->

     <property>

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

         <value>cyjf01</value>

     </property>

<property>

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

         <value>cyjf02</value>

     </property>

 

     <!-- 指定zk集群地址 -->

     <property>

         <name>yarn.resourcemanager.zk-address</name>

         <value>cyjf06:2181,cyjf07:2181,cyjf08:2181</value>

     </property>

     <property>

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

         <value>mapreduce_shuffle</value>

     </property>

 

     <property>

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

         <value>true</value>

     </property>

 

     <property>

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

         <value>86400</value>

     </property>

<!-- 启用自动恢复 -->

     <property>

         <name>yarn.resourcemanager.recovery.enabled</name>

         <value>true</value>

     </property>

 

     <!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->

     <property>

         <name>yarn.resourcemanager.store.class</name>

         <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>

     </property>

 

</configuration>

 

 

 

 

 

8.配置集群节点

 

cyjf03

cyjf04

cyjf05

cyjf06

cyjf07

cyjf08                     //修改/home/hadoop/app/hadoop2.7/etc/Hadoop/slaves文件

#scp -r /home/hadoop/app/hadoop2.7  cyjf02-08:/home/hadoop/app/hadoop //将配置hadoop复制到cyjf02-cyjf08

 

 

 

 

9. HA集群初始化步骤

 

zkServer.sh start                      启动zookeeper  (在cyjf06,cyjf07,cyjf08)

hadoop-daemon.sh start journalnode    启动journalnode (在cyjf06,cyjf07,cyjf08)

hadoop namenode -format              格式话hdfs,第一次需要

scp -r /home/name/ slave1:/home/name/  复制元数据信息到cyjf02节点

hdfs namenode -bootstrapStandby同步master节点元数据信息  (在备用namenode节点)

hdfs zkfc -formatZK                      格式化高可用(只能在nameonde节点进行)

start-dfs.sh                               启动HDFS

start-yarn.sh                              启动YARN

yarn-daemon.sh start resourcemanager  (备用rm节点单起)

 

 

10.单进程启动方式

//单个进程启动方式

hadoop-daemon.sh start namenode 

hadoop-daemon.sh start datanode  

hadoop-daemon.sh start journalnode

hadoop-daemon.sh start zkfc

yarn-daemon.sh start resourcemanager  

 

 

11.查看NNRM高可用状态

 

hdfs haadmin -getServiceState nn1   //查看nn高可用状态

 

hdfs haadmin -getServiceState nn2

 

 

yarn rmadmin -getServiceState rm1 //查看rm高可用状态

 

yarn rmadmin -getServiceState rm2

 

转载于:https://www.cnblogs.com/ybw624/p/9546896.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值