Hadoop集群搭建教程

Hadoop集群搭建教程

一、环境安装

1. 准备虚拟机

使用VMware或hyper-v创建三台虚拟机(系统为Ubuntu18.04)。

2. 设置静态IP、修改主机名和hosts
  • 设置静态IP

    修改目录/etc/netplan下的配置文件01-netcfg.yaml(文件名可能不一样)

    root@Hadoop:~# vim /etc/netplan/01-netcfg.yaml
    

    将dhcp4更改为no,并设置IP地址、网关和DNS服务器,配置如下

    # This file describes the network interfaces available on your system
    # For more information, see netplan(5).
    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: no
          addresses: [172.22.160.101/20]    #IP地址和掩码
          gateway4: 172.22.160.1            #网关
          nameservers:                      #DNS
                  addresses: [114.114.114.114]
    
    

    另外两台主机的IP分别为:172.22.160.102、172.22.160.103

    注意:IP设置成自己的,确保三台主机在同一局域网下,且能够相互ping通

  • 修改主机名

    将3台主机名修改成不同的名称,分别为Hadoop101、Hadoop102、Hadoop103,便于区分。

    vi /etc/hostname
    
  • 修改hosts文件

    vi /etc/hosts
    

    添加以下三条记录(IP需要修改成自己的)

    172.22.160.101	Hadoop101
    172.22.160.102	Hadoop102
    172.22.160.103	Hadoop103
    
3. 配置ssh
1. 安装ssh

检查是否安装了ssh

root@Hadoop101:~# ps -e | grep ssh
 1048 ?        00:00:00 sshd
 1097 ?        00:00:00 sshd
 1217 ?        00:00:00 sshd

若没有出现上述信息,则需要安装ssh

apt-get install openssh-server
2. 允许root通过ssh登录

修改sshd_config文件

hadoop@Hadoop102:~$ sudo vim /etc/ssh/sshd_config

找到PermitRootLogin,修改为如下

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
3. 设置免密登录

在主机Hadoop101上生成密钥公钥对

root@Hadoop101:~# ssh-keygen -t rsa

将公钥发送到主机Hadoop102和Hadoop103

root@Hadoop101:~# ssh-copy-id hadoop102
root@Hadoop101:~# ssh-copy-id hadoop103
4. 编写分发脚本

一般情况下,服务器的数量比较多,在每台服务器上分别配置Hadoop不太现实,rsync可以将文件同步到其他服务器,以下脚本可以群发

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环,这里host根据自己的节点数和主机名设置
for((host=102; host<104; host++)); do
        #echo $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

将脚本放在/usr/sbin目录下,并赋予777权限

5. 安装jre和Hadoop

解压server-jre-8u261-linux-x64.tar.gz到/usr/java

root@Hadoop101:~# mkdir /usr/java
root@Hadoop101:~# tar -zxvf server-jre-8u261-linux-x64.tar.gz
root@Hadoop101:~# mv jdk1.8.0_261/ /usr/java/

解压hadoop-3.2.1.tar.gz到/usr/hadoop

root@Hadoop101:~# mkdir /usr/hadoop
root@Hadoop101:~# tar -zxvf hadoop-3.2.1.tar.gz
root@Hadoop101:~# mv hadoop-3.2.1 /usr/hadoop/

添加环境变量

vim /etc/profile

添加以下内容:

export JAVA_HOME=/usr/java/jdk1.8.0_261
export HADOOP_HOME=/usr/hadoop/hadoop-3.2.1
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin

二、配置Hadoop集群

切换到目录/usr/hadoop/hadoop-3.2.1/etc/hadoop/,修改配置文件

1. hadoop-env.sh

在该文件中添加JAVA_HOME

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
export JAVA_HOME=/usr/java/jdk1.8.0_261
2. core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop101:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/hadoop/hadoop-3.2.1/tmp</value>
</property>

3. hdfs-site.xml
<!-- hdfs存储数据的副本数量(避免一台宕机),可以不设置,默认值是3 -->
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
 
<!--hdfs 监听namenode的web的地址,默认就是9870端口,如果不改端口也可以不设置 -->
<property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop101:9870</value>
</property>
        
<!-- hdfs保存datanode当前数据的路径,默认值需要配环境变量,建议使用自己创建的路径,方便管理-->
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/usr/hadoop/hadoop-3.2.1/hdfs/data</value>
</property>
 
<!-- hdfs保存namenode当前数据的路径,默认值需要配环境变量,建议使用自己创建的路径,方便管理-->
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/usr/hadoop/hadoop-3.2.1/hdfs/name</value>
</property>
 
4. yarn-site.xml
<!-- 必须配置指定YARN的老大(ResourceManager)在哪一台主机 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop101</value>
</property>
 
<!-- 必须配置提供mapreduce程序获取数据的方式 默认为空 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
5. mapred-site.xml
<!-- 必须设置,mapreduce程序使用的资源调度平台,默认值是local,若不改就只能单机运行,不会到集群上了 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!-- 这是3.2以上版本需要增加配置的,不配置运行mapreduce任务可能会有问题,记得使用自己的路径 -->
<property>
    <name>mapreduce.application.classpath</name>
    <value>
        /usr/hadoop/hadoop-3.2.1/etc/hadoop,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/common/*,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/common/lib/*,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/hdfs/*,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/hdfs/lib/*,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/mapreduce/*,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/mapreduce/lib/*,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/yarn/*,
        /usr/hadoop/hadoop-3.2.1/share/hadoop/yarn/lib/*
    </value>
</property>
6. 配置workers

配置需要启动datanode节点的主机

hadoop101
hadoop102
hadoop103
7. 分发配置文件

将配置好的文件分发到主机hadoop102和hadoop103上

xsync /usr/hadoop/hadoop-3.2.1/etc/hadoop/
8. 启动集群

在/hadoop/sbin路径下,将以下参数添加到start-dfs.sh和stop-dfs.sh的顶部

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

将以下参数添加到start-yarn.sh和stop-yarn.sh的顶部

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

启动hdfs

root@Hadoop101:~# start-dfs.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值