Hadoop集群搭建

Hadoop运行环境搭建

学习Hadoop的第一步一定是环境搭建,但是安装不是目的,通过安装认识Hadoop才是目的。

(一)部署模式

  1. 单机 (Standalone):默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。单机情况下,文件存储在Linux中!
  2. 伪分布式(Pesudo Distributed):Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。文件存储在HDFS中
  3. 集群 (Cluster):会将N个节点组成Hadoop集群,主节点和从节点分开部署在不同的机器上
  4. HA高可用 (High Available):主要用于生产环境部署,即高可用(7*24小时不中断服务)。解决hadoop的单点故障

这里我们搭建的是完整的集群模式。

(二)安装前准备

因为Hadoop是由java编写的,他的运行一定离不开jdk,又因为hadoop是分布式的需要多个节点去操作,这时一定要保证多个节点的时间同步,我们首先来配置jdk和时钟同步。

1、jdk的安装
  1. 卸载现有jdk
  1. 查询是否安装java软件:

[root@node-1 ~]$ rpm -qa | grep java

  1. 如果安装的版本低于1.8,卸载该jdk,将第一步查出的jdk卸载。

[root@node-1 ~]$ rpm -e --nodeps 软件包

  1. 对用户offcn增加权限

[root@node-1 offcn]# visudo

## Same thing without a password

# %wheel        ALL=(ALL)       NOPASSWD: ALL

%offcn  ALL=(ALL)       NOPASSWD: ALL

  1. 切换用户offcn,在/opt/下创建目录

[offcn@node-1 ~]$ echo "softwaress apps" | xargs sudo mkdir

[offcn@node-1 ~]$ sudo chmod -R 777 /opt/

  1. 用文件传输工具将jdk导入到softwaress文件夹下面
  2. 在/home/offcn目录中查看软件包是否导入成功

[offcn@node softwaress]$ pwd

/opt/softwaress

[offcn@node softwaress]$ ll

total 190444

-rw-rw-r--. 1 offcn offcn 195013152 May 11  2022 jdk-8u212-linux-x64.tar.gz

[offcn@node softwaress]$

  1. 解压jdk到/opt/app目录下

[offcn@node-1 softwares]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../apps/

  1. 配置jdk环境变量
  1. 先获取jdk路径:

[offcn@node-1 jdk-1.8]$ pwd

/opt/apps/jdk-1.8

  1. 编辑内容/etc/profile

[offcn@node-1 softwares]$  sudo vim /etc/profile

# jdk-1.8

export JAVA_HOME=/opt/apps/jdk-1.8

export PATH=$PATH:$JAVA_HOME/bin 

  1. 让修改后的文件生效:

[offcn@node-1 jdk-1.8]$ source /etc/profile

  1. 测试jdk是否安装成功

[offcn@node jdk-1.8]$ java -version

java version "1.8.0_212"

Java(TM) SE Runtime Environment (build 1.8.0_212-b10)

Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

[offcn@node jdk-1.8]$

2、时钟同步策略

   时间同步的方式:在集群中找一台机器,作为时间服务器,集群中其他机器与这台机器定时的同步时间,比如,每隔十分钟,同步一次时间。

配置时间同步实操:

  1. 时间服务器配置
  1. 检查ntp是否安装,若没有安装则使用yum install -y ntp进行安装

[offcn@node-1 ~]$sudo rpm -qa|grep ntp

ntpdate-4.2.6p5-28.el7.centos.x86_64

python-ntplib-0.3.2-1.el7.noarch

fontpackages-filesystem-1.44-8.el7.noarch

ntp-4.2.6p5-28.el7.centos.x86_64

[offcn@node-1 ~]$ sudo systemctl start ntpd

  1. 执行:

[offcn@node-1 ~]$ sudo systemctl enable ntpd

[offcn@node-1 ~]$ crontab -e

#编写脚本

*/10 * * * * sudo /usr/sbin/ntpdate -u ntp.aliyun.com

  1. 修改任意机器时间

[offcn@node-2 ~]$ sudo date -s "2008-08-08 08:08:08"

  1. 十分钟后查看机器是否与时间服务器同步

[offcn@node-2 ~]$ date

(三)安装配置

1、安装Hadoop

Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/

(1)将hadoop-3.2.1.tar.gz 上传到/opt/softwaress

[offcn@node-1 softwares]$ pwd

/opt/softwaress

[offcn@node-1 softwares]$ ll

总用量 531948

-rw-r--r--. 1 root root 359196911 3月   8 11:00 hadoop-3.2.1.tar.gz

-rw-r--r--. 1 root root 185515842 3月   5 16:22 jdk-8u144-linux-x64.tar.gz

    (2)将hadoop-3.2.1.tar.gz解压到/opt/apps

[offcn@node-1 softwares]$ tar -zxvf hadoop-3.2.1.tar.gz  -C ../apps/

[offcn@node-1 softwares]$ ll

-rw-r--r--. 1 root root 359196911 3月   8 11:00 hadoop-3.2.1.tar.gz

(3)将Hadoop添加到环境变量

[offcn@node-1 apps]$ sudo vim /etc/profile

# hadoop-3.2.1

export HADOOP_HOME=/opt/apps/hadoop-3.2.1

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

 (4)让修改后的文件生效

[offcn@node-1 apps]$ source /etc/profile

    (5)测试是否安装成功

[offcn@node-1 apps]$ hadoop version

Hadoop 3.2.1

2、集群规划

node-1

node-2

node-3

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

3、修改配置文件
(1)hadoop-env.sh

[offcn@node-1 hadoop]$ cd $HADOOP_HOME/etc/hadoop

[offcn@node-1 hadoop]$ pwd

/opt/apps/hadoop-3.2.1/etc/hadoop

[offcn@node-1 hadoop]$ vim hadoop-env.sh

# Java的环境变量

export JAVA_HOME=/opt/apps/jdk-1.8

(2)core-site.xml

[offcn@node-1 hadoop]$ vim core-site.xml

文件内容如下:

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

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://node-1:8020</value>

</property>

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

<property>

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

    <value>/opt/apps/hadoop-3.2.1/datas</value>

</property>

<!-- 配置HDFS网页登录使用的静态用户为offcn -->

<property>

    <name>hadoop.http.staticuser.user</name>

    <value>offcn</value>

</property>

<!-- 配置该offcn(superUser)允许通过代理访问的主机节点 -->

<property>

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

    <value>*</value>

</property>

<!-- 配置该offcn(superUser)允许通过代理用户所属组 -->

<property>

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

    <value>*</value>

</property>

<!-- 配置该offcn(superUser)允许通过代理的用户-->

<property>

    <name>hadoop.proxyuser.offcn.users</name>

    <value>*</value>

</property>

(3)hdfs-site.xml

[offcn@node-1 hadoop]$ vim hdfs-site.xml

文件内容如下:

<!-- secondaryNamenode web端访问地址-->

<property>

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

    <value>node-3:9868</value>

</property>

(4)yarn-site.xml

<!-- 指定MR走shuffle -->

<property>

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

    <value>mapreduce_shuffle</value>

</property>

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

<property>

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

    <value>node-2</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.log-aggregation-enable</name>

    <value>true</value>

</property>

<!-- 设置日志聚集服务器地址 -->

<property> 

    <name>yarn.log.server.url</name> 

    <value>http://node-1:19888/jobhistory/logs</value>

</property>

<!-- 设置日志保留时间为7天 -->

<property>

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

    <value>604800</value>

</property>

<!-- 防止和Doris的backend端口冲突 -->

<property>

<name>yarn.nodemanager.localizer.address</name>

    <value>0.0.0.0:8040</value>

</property>

(5)mapred-site.xml

[offcn@node-1 hadoop]$ vim mapred-site.xml

文件内容如下:

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

<property>

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

    <value>yarn</value>

</property>

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

<property>

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

    <value>node-1:10020</value>

</property>

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

<property>

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

    <value>node-1:19888</value>

</property>

(6)配置workers(去掉localhost,添加如下内容)

[offcn@node-1 hadoop]$ vim workers

node-1

node-2

node-3

远程分发:

cd /opt/apps/

scp -r hadoop-3.2.1/ node-2:$PWD

scp -r hadoop-3.2.1/ node-3:$PWD

sudo scp /etc/profile node-2:/etc/

sudo scp /etc/profile node-3:/etc/

source /etc/profile

hadoop version

(四)集群启停及测试

1、单点启动

(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!)

在格式化时,要保证一切正常,不要出现错误、异常、或者提示让选择yes或者no;如果出现错误等情况,把所有的配置检查一遍确认无误后,将hadoop安装目录下的data、pid、logs目录删除重新格式化。

[offcn@node-1 hadoop-3.2.1]$ hadoop namenode -format

  1. 在node-1上启动NameNode

hdfs --daemon start namenode

hdfs --daemon start datanode

hdfs --daemon start secondarynamenode

       (5)启动yarn进程

yarn --daemon start resourcemanager

yarn --daemon start nodemanager

mapred --daemon start historyserver

2、集群群起启动

(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!),操作方式详见单点启动

(2)启动HDFS

[offcn@node-1 hadoop-3.2.1]$ sbin/start-dfs.sh

Starting namenodes on [node-1]

Starting datanodes

Starting secondary namenodes [node-3]

(3)在配置了ResourceManager的节点(node-2)启动YARN

[offcn@node-2 hadoop-3.2.1]$ sbin/start-yarn.sh

Starting resourcemanager

Starting nodemanagers

3、查看Web界面

       (1)查看Hdfs的Web界面

浏览器输入地址:http://node-1:9870/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值