如何在linux虚拟机上配置Hadoop

写在前面

本文所用的配置如下所示

虚拟机 VMware Workstation 15 Pro
JDK jdk-8u202-linux-x64-demos.tar.gz
Linux Centos7.7.1908_DVD
Hadoop Hadoop 2.8.5
MySQL mysql80-community-release-el7-1

由于有些内容如主机名、IP地址、安装路径等是用户自己的设置的,为了避免产生混淆,在本例中的自定义内容列举如下,读者可以根据自己的情况设置:


Master IP与主机名
192.169.170.133 Centos01
Slave IP与主机名
192.169.170.134 Centos02
192.169.170.135 Centos03


压缩包存放路径
/opt/softwares/
压缩包解压路径
/opt/modules/

安装Centos

启动VMware,点击创建新的虚拟机
在这里插入图片描述
在安装向导中选择典型安装
在这里插入图片描述
然后选择下载好的Centos镜像
在这里插入图片描述
其余选项均选择默认设置,直接点击下一步,完成。
Centos安装程序启动后,SOFTWARE SELECTION中选择GMONE Desktop。在这里插入图片描述
在这里插入图片描述
其他选项按照默认设置,点击开始安装。
在虚拟机上安装好Centos后,在/opt/目录下建立两个文件夹modules和softwares。
在这里插入图片描述

安装JDK和Hadoop

下载JDK8的安装包(截图是最新的版本,博主使用的是jdk-8u202)存放在softwares文件夹里,并解压到/opt/modules/
在这里插入图片描述
随后配置JAVA环境变量。执行gedit /etc/profile,在结尾加入如下内容

export JAVA_HOME=/opt/modules/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin

执行source /etc/profile使修改生效。
同样,下载Hadoop2.8.5安装包到softwares文件夹中,并解压到modules中。
在这里插入图片描述
执行gedit /etc/profile,将如下内容加入末尾

export HADOOP_HOME=/opt/modules/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

执行source /etc/profile使修改生效。

配置IP映射

  1. 用root账号登录,执行gedit /etc/hostname,将主机名改为Centos01,重启生效。
    在这里插入图片描述
  2. 关闭防火墙。执行systemctl stop firewalld.service操作可以关闭防火墙,执行systemctl status firewalld.service可以查看防火墙是否被关闭。如显示如下信息,说明防火墙已经成功关闭。
    3.
  3. 点击虚拟机左上角的编辑虚拟网络设置,
    在这里插入图片描述
    将VMware8的IP地址等属性改成如图所示
    在这里插入图片描述
  4. 在设置中打开网络设置,开启有线网络,点击设置。
    在这里插入图片描述
    将本机的IPv4地址设置为到与VMware8在同一子网内。例如设IP地址为255.255.255.0,子网掩码设置为255.255.255.0,网关设置为192.168.170.2,DNS设置为192.168.170.2
    在这里插入图片描述
  5. 建立主机映射
    执行 gedit /hosts,将文件改为如下内容(本例以3个虚拟机建立集群)
192.168.170.133 Centos01
192.168.170.134 Centos02
192.168.170.135 Centos03
  1. /etc/sysconfig/network-scripts/ifcfg-ens33全部设置为如下字段,修改完后执行service network restart命令,如能正常启动说明修改正确(HWADDR为虚拟机的硬件地址)。
HWADDR=00:0C:29:F6:B1:DB
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.170.133
NETMASK=255.255.255.0
GATEWAY=192.168.170.2
DNS=192.168.170.2

7.执行ping www.baidu.com命令,若能返回信息,则说明连接互联网成功。
在这里插入图片描述
8. 克隆主机
现将主机关机,克隆出两台虚拟机,IP地址分别设置为192.168.170.134192.168.170.135,hostname分别设置为Centos02Centos03。其余设置和之前的相同。
在这里插入图片描述

配置ssh

输入ssh localhost命令,再输入cd ~/.ssh命令

配置Hadoop

  1. 依次修改如下文件:

/opt/modules/hadoop-2.8.5/etc/hadoop/core-site.xml的configuration部分设置为以下内容,目的是配置Service 的URI 地址、Hadoop集群临时目录等信息。

<configuration>

<property>

        <name>fs.defaultFS</name>

        <value>hdfs://Centos01:9000</value>

    </property>

    <property>

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

        <value>file:/opt/modules/hadoop-2.8.5/tmp</value>

    </property>

</configuration>

/opt/modules/hadoop-2.8.5/etc/hadoop/hdfs-site.xml的configuration部分设置为以下内容,目的是配置Hadoop集群的HDFS 另lj 名、通信地址、端口等信息。

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>2</value>

    </property>
<property>

        <name>dfs.permissions.enabled</name>

        <value>false</value>

    </property>
<property>

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

        <value>file:/opt/modules/hadoop-2.8.5/tmp/dfs/name</value>

    </property>
<property>

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

        <value>file:/opt/modules/hadoop-2.8.5/tmp/dfs/data</value>

    </property>

</configuration>

/opt/modules/hadoop-2.8.5/etc/hadoop/yarn-site.xml中的configuration部分设置为以下内容,目的是为资源管理器启动脚本添加JAVA_ HOME 路径

<configuration>

<property>

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

</configuration>

/opt/modules/hadoop-2.8.5/etc/hadoop/mapred-site.xml中的configuration部分设置为
(目录中本身没有mapred-site.xml文件,需要将mapred-site.xml.template文件重命名mapred-site.xml)

<configuration>

    <property>

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

        <value>yarn</value>

    </property>

</configuration>

/opt/modules/hadoop-2.8.5/etc/hadoop/slaves的内容改为

Centos01
Centos02
Centos03

/opt/modules/hadoop-2.8.5/etc/hadoop/hadoop-env.sh的结尾加上以下内容,目的是为Hadoop 集群启动脚本添加JAVA_HOME 路径

export HADOOP_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_IDENT_STRING=$USER
export JAVA_HOME=/opt/modules/jdk1.8.0_202
export HADOOP_HOME=opt/modules/hadoop-2.8.5
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
  1. 配置完Hadoop后,执行以下命令将Hadoop路径文件复制到克隆机中
scp -r /opt/modules/hadoop-2.8.5/ root@Centos02 /opt/modules/
scp -r /opt/modules/hadoop-2.8.5/ root@Centos03 /opt/modules/

启动Hadoop

  1. 初始化

执行hdfs namenode -format命令进行格式化,如果返回以下信息,则说明格式化成功。如果Exiting with status不是0,则格式化未成功,请检查之前的步骤及配置是否正确。

INFO util.ExitUtil: Exiting with status 0
INFO namenode.NameNode: SHUTDOWN_MSG: 
************************************************************
SHUTDOWN_MSG: Shutting down NameNode at Centos01/192.168.170.133

在成功运行Hadoop之后,如果再次初始化,会导致Master的datanode无法启动。一种原因是ID发生错乱,解决方法可以参考Hadoop 启动后使用JPS查看没有DataNode

  1. 启动Hadoop集群

以上步骤配置完毕后,执行start-all.sh启动集群。输入jps命令,可以看到正在运行的组件,正常情况会返回如下名称

3568 NodeManager
9283 Jps
2967 NameNode
3290 SecondaryNameNode
3453 ResourceManager
3118 DataNode

常见问题

  • 环境变量问题

如果没法在./hadoop-2.8.5/sbin/路径外运行hdfs命令,可能是/etc/hosts文件没有添加Hadoop的环境变量或者没有用source刷新hosts文件

安装Zookeeper

  1. 下载Zookeeper安装包 (本文下载的是zookeeper-3.4.14)。
  2. 在主节点下载并解压压缩包。
  3. ./zookeeper-3.4.14/conf/中的zoo_sample.cfg重命名为zoo.cfg,添加如下内容
dataDir=/opt/modules/zkdata  <!-->该路径可以自定义<-->
server.1=Centos02:2888:3888
server.2=Centos03:2888:3888
  1. ./zkdata/中创建一个文件myid,文件中写入一个0-255的整数,该数字要与节点一一对应,比如Centos01的数字是1,Centos02的数字便是2,以此类推。
  2. 将以上步骤同步到其他节点中。

安装Hive

安装MySQL
切换到root用户,输入yum install mysql mysql-server,会自动安装如下组件

mysql-community-libs-8.0.18-1.el7.x86_64
mysql-community-common-8.0.18-1.el7.x86_64
mysql80-community-release-el7-1.noarch
mysql-community-server-8.0.18-1.el7.x86_64
mysql-community-client-8.0.18-1.el7.x86_64
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值