0


Hadoop完全分布式的搭建

前言

今天我们来学习Hadoop完全分布式的搭建,我们要搭建hadoop完全分布式要掌握哪些东西呢?

首先需要掌握的就是Hadoop的基础知识,了解Hadoop的生态系统,包括Hadoop的核心组件(如HDFS、MapReduce、YARN等)以及其他相关组件(如HBase、Hive、Zookeeper等)。理解这些组件的功能和相互作用对于搭建和管理Hadoop集群至关重要。因为Hadoop通常在Linux操作系统上运行,因此需要对Linux有一定的了解,包括基本的命令行操作、系统管理和网络配置等。再者Hadoop是用Java编写的,因此需要对Java编程语言有一定的了解,包括Java编程基础、JDK的安装和配置等。还要了解如何规划和搭建Hadoop集群,包括选择合适的硬件和软件、配置网络、安装和配置Hadoop等。此外,还需要了解如何管理和维护Hadoop集群,包括监控集群状态、处理故障、优化性能等。熟悉Hadoop的配置文件(如

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

等),了解如何配置和优化Hadoop集群以满足不同的业务需求。熟悉Hadoop的配置文件(如

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

等),了解如何配置和优化Hadoop集群以满足不同的业务需求。了解如何保障Hadoop集群的安全性和可靠性,包括设置访问控制、数据加密、备份和恢复等。

当我们大概了解了这些以后,就可以开始我们的搭建过程

搭建

准备

首先我们的Hadoop完全分布式,是搭建在Linux系统上的,所以我们需要在Linux服务系统上准备三个节点,这里大家自行准备,我准备的是

  • bigdata1
  • bigdata2
  • bigdata3

有了节点以后,我们还需要做一下集群规划
节点NameNodeDataNodeSecondNameNodebigdata1 √ √bigdata2 √ √bigdata3 √
上述表格就是我们的集群规划,采用1NameNode、3DataNode的方式去搭建我们的Hadoop分布式集群

配置JAVA环境

搭建Hadoop先配置支撑它的语言,要不则会寸步难行,这里选择的是jdk1.8.0版本

首先先把压缩包拉取到bigdata1节点的/opt/software目录下(没有的自行创建)

然后运行命令解压压缩包到/opt/module目录下(没有的自行创建)

tar -zxvf /opt/software/jdk-8u212-linux-x64.tar .gz -C /opt/module

首先 tar是Linux 系统上的一个用于处理归档文件的工具,-zxvf分别代表

  • z: 使用 gzip 进行解压。这告诉 tar 命令,归档文件是用 gzip 压缩的,所以需要先进行 gzip 解压。
  • x: 解压。这告诉 tar 命令要解压归档文件。
  • v: 详细模式(verbose)。这会在解压过程中显示正在解压的文件名,使得用户可以看到解压的进度。
  • f: 文件。这告诉 tar 命令后面会跟一个文件名,而不是从标准输入或输出中读取/写入。

解压缩完文件以后,还要配置JAVA环境才可以正常使用,所有环境我们都配在/etc/profile.d/目录下的my_env.sh文件下,这里不推荐在/etc/目录下的profile文件,因为一旦profile文件受损,节点就会宕机,所以建议配置在自建文件my_env.sh上

vim /etc/profile.d/bigdata_env.sh

在my_env.sh文件上添加内容:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

保存退出以后,运行命令,刷新环境变量使其生效

source /etc/profile

运行命令,验证是否配置成功,如果没有报错,则为成功

java -version
javac

搭建Hadoop集群

与配置JAVA环境一样,我们需要先解压压缩包

tar -zxvf  hadoop-3.1.3.tar.gz -C /opt/module/

然后我们配置hadoop的运行环境

vim /etc/profile.d/bigdata_env.sh
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

然后使用source刷新环境变量文件,运行命令验证是否成功

hadoop version

接下来就是配置hadoop分布式最重要的部分了,配置文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/

Hadoop-env.sh 文件

hadoop-env.sh

是 Hadoop 分布式文件系统 (HDFS) 和其他 Hadoop 组件的一个重要配置文件,这个文件主要用于设置 Hadoop 运行环境的一些重要参数,比如 Java 运行环境(JRE)的路径、Hadoop 的 PID(进程 ID)文件存放位置等。

然后修改Hadoop-env.sh文件,添加内容

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

核心配置文件 —— core-site.xml

<configuration>

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata1:9820</value>
    </property>

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

    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

</configuration>

HDFS 配置文件 —— hdfs-site.xml

<configuration>

    <property>
        <name>dfs.namenode.http-address</name>
        <value>bigdata1:9870</value>
    </property>

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata3:9868</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>

</configuration>

YARN 配置文件 —— yarn-site.xml

<configuration>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>bigdata2</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.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log.server.url</name>
        <value>http://bigdata1:19888/jobhistory/logs</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
</configuration>

MapReduce 配置文件 —— mapred-site.xml

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

    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>bigdata1:10020</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>bigdata1:19888</value>
    </property>
</configuration>

配置 workers/slaves 文件

bigdata1
bigdata2
bigdata3

在/etc/profile.d/bigdata_env.sh 文件末尾田间

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

不添加会报错

启动hadoop集群

[root@bigdata1 hadoop]# start-all.sh 

报错内容如下:

Starting namenodes on [bigdata1]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [bigdata1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.

这是保证在HDFS上可以畅通无阻,生产活动的时候不建议这样,因为root用户是权限最大的用户

分发

配置分发工具:(参考尚硅谷)

进入/usr/bin目录下,创建文件xsync,

#!/bin/bash
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
for host in bigdata1 bigdata2 bigdata3
do
  echo ====================  $host  ====================
  for file in $@
  do
    if [ -e $file ]
    then
      pdir=$(cd -P $(dirname $file); pwd)
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

给xsync添加可执行的权限

chmod 777 /usr/bin/xsync

然后直接分发想分发的文件就可以了

xsync /opt/module/
xsync /etc/profile

第一启动hadoop集群需要先格式化,在bigdata1下运行

hdfs namenode -format

然后再bigdata1中,运行start-all.sh;再进入bigdata2,运行start-yarn.sh

和集群规划如果一致那么说明配置成功


本文转载自: https://blog.csdn.net/2301_78038072/article/details/136498258
版权归原作者 十二点的泡面 所有, 如有侵权,请联系我们删除。

“Hadoop完全分布式的搭建”的评论:

还没有评论