hadoop搭建

前言

一般企业中不会使用master slave01 slave02来命名

vmware创建虚拟机

打开vmware软件,新建虚拟机

典型

稍后安装系统

选择centos7

虚拟机名称和安放位置自行选择(最小化安装消耗空间较少)

默认磁盘大小即可

自定义硬件

选择centos7的iso镜像文件(没有的话自行上阿里云下载)随后点击关闭centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云

完成

开启虚拟机

安装centos7

键盘上下键选择第一项直接安装,第二项是测试镜像完整性并安装,耗时较久

等待一会

语言中英文都可,按自己喜好,选择继续

选择安装位置,默认即可

直接点击完成

点击开始安装即可

点击设置root用户密码

如果设置的是弱密码需要点击两次完成

点击创建用户

创建一个hd用户,如果设置的是弱密码需要点击两次完成

等待安装,点击完成配置

再次等待,点击重启

启动centos7进行初步设置

登录root用户,输入密码不会有提示 输入完毕后直接回车即可登录

登录后发现没有IP地址

先配置一个临时IP地址(ens33 对应自己的网卡)

ip根据自己实际情况而设置

复制代码
ifconfig ens33 192.168.20.30

使用远程工具ssh连接,这里使用MobaXterm

连接类型选择SSH ,输入centos7的IP地址(前面设置了192.168.20.30)根据自己的实际情况来,选择登录hd 用户,点击OK连接,随后输入密码(一样的输入密码是没有提示的)

切换到root用户(因为后面配置需要root用户权限)

复制代码
su root

修改为静态ip地址(前面设置的是临时ip重启后失效)

复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens33

将BOOTPROTO从dhcp修改为static

ONBOOT从no修改为yes

在文件末尾加入如下三行(因为不需要联网所以不用配置DNS)ip根据自己实际情况而设置

复制代码
IPADDR=192.168.20.30
NETMASK=255.255.255.0
GATEWAY=192.168.20.2

:wq保存退出、ZZ也可

重启网卡令配置生效

复制代码
systemctl restart network

关闭防火墙并永久禁用防火墙和selinux,setenforce 0重启后会失效,修改selinux文件需要重启才能生效

复制代码
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config

将SELINUX=enforcing修改为SELINUX=disabled

保存退出

安装Java环境

先删除Linux自带的Java环境

在root用户下

复制代码
yum remove  -y  java* 

回到hd用户

复制代码
su hd

在hd用户目录下创建apps文件夹来放软件包及安装软件

上传Java包

将jdk-8u121-linux-x64.gz包上传至上面创建的apps目录下

解压Java包

注意以hd用户解压否则会出现hd用户无权限无法启动Hadoop

复制代码
tar -zxvf jdk-8u121-linux-x64.gz

 mv jdk1.8.0_121/ java

配置Java环境

复制代码
su root

添加环境变量

复制代码
vi /etc/profile

G来到文件末尾,o在下一行插入

复制代码
export JAVA_HOME=/home/hd/apps/java
export PATH=$PATH:$JAVA_HOME/bin

加载系统环境并查看Java版本

复制代码
source /etc/profile
java -version

Hadoop安装

上传Hadoop包

上传hadoop-2.8.1.tar.gz至apps目录并解压

切换至hd用户

复制代码
su hd

解压 Hadoop包

复制代码
tar -zxvf hadoop-2.8.1.tar.gz

修改目录名

复制代码
mv hadoop-2.8.1 hadoop

修改Hadoop配置文件

先进入Hadoop配置文件目录

复制代码
cd hadoop/etc/hadoop/

修改hadoop-env.sh

复制代码
vi hadoop-env.sh

按G来到文件末尾o在下一行插入,在文件末尾追加

复制代码
export JAVA_HOME=/home/hd/apps/java

:wq保存退出 或 ZZ保存退出

注意!!!! 看了再往下做

下面修改的4个文件一定要在<configuration></configuration>中添加,不要图省事直接追加在文件末尾,一个xml文件只能一个根节点,出现了2个 会导致Hadoop无法启动(本人踩的雷)

修改core-site.xml

复制代码
 vi core-site.xml

在<configuration></configuration>中添加

复制代码
    <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hd/apps/hadoop/tmpdata</value>
    </property>
    <!--Hadoop回收站trash,默认是关闭的 可以设置一个时间阀值(单位:分钟),
当回收站里文件的存放时间超过这个阀值或是回收站被清空时,文件才会被彻底删除,并且释放占用的数据块。
-->
  <property>
            <name>fs.trash.interval</name>
            <value>1440</value>
</property>

修改hdfs-site.xml

复制代码
vi hdfs-site.xml

在<configuration></configuration>中添加

复制代码
    <!-- 指定HDFS副本的数量 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 设置namenode的http通讯地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:50070</value>
    </property>

    <!-- 设置secondarynamenode的http通讯地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:50090</value>
    </property>

    <!-- 设置namenode存放的路径 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hd/apps/hadoop/namenode</value>
    </property>

    <!-- 设置datanode存放的路径 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hd/apps/hadoop/datanode</value>
    </property>

修改mapred-site.xml

因为我的包里没有mapred-site.xml,需要将mapred-site.xml.template重命名为mapred-site.xml

复制代码
mv mapred-site.xml.template mapred-site.xml

再来修改文件

复制代码
vi mapred-site.xml

在<configuration></configuration>中添加

复制代码
    <!-- 指定mr运行在yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/home/hd/apps/hadoop</value>
    </property>
    <property>
          <name>mapreduce.map.env</name>
          <value>HADOOP_MAPRED_HOME=/home/hd/apps/hadoop</value>
    </property>
    <property>
          <name>mapreduce.reduce.env</name>
          <value>HADOOP_MAPRED_HOME=/home/hd/apps/hadoop</value>
    </property>

修改yarn-site.xml

复制代码
vi yarn-site.xml

在<configuration></configuration>中添加

复制代码
    <!-- 指定YARN的老大(ResourceManager)的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <!-- reducer获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

修改slaves

复制代码
vi slaves

追加

复制代码
slave01
slave02

修改环境变量

先切换到root用户

复制代码
su root

vi /etc/profile

在文件末尾追加

复制代码
export HADOOP_HOME=/home/hd/apps/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

加载环境

复制代码
source /etc/profile

查看Hadoop版本

复制代码
hadoop version

克隆虚拟机

先关闭虚拟机

复制代码
shutdown -h now

右键虚拟机标签,选择管理,克隆

我选择链接克隆,根据自己情况来选择(链接克隆如果母机损坏了链接克隆的机器也无法正常启动,但是占用空间小,克隆速度快)

为了方便分辨虚拟机名称设为hd2,存储位置自行选择,点击完成即可

完毕

同样方法再克隆一台

启动并修改克隆的虚拟机IP地址

复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens33

将网卡ID删除(避免与母机冲突)并修改IP地址,ip根据自己实际情况而设置

重启网卡

复制代码
systemctl restart network

随后检查个各机器防火强是否关闭,selinux是否关闭

复制代码
 systemctl status firewalld  
setenforce 0

java版本,Hadoop版本是否一致(如果没有的话自行检查 /etc/profile 环境变量 source加载)

复制代码
 java -version
hadoop version

修改主机名

母机 master

从机1 slave01

从机2 slave02

一般企业中是不会像这样命名的

复制代码
hostnamectl set-hostname master

bash重新加载交互

复制代码
hostnamectl set-hostname slave01
hostnamectl set-hostname slave02

修改/etc/hosts 文件

切换到root用户

复制代码
su root

修改hosts文件

复制代码
vi /etc/hosts

在文件末尾追加(ip根据自己实际情况而设置)

复制代码
192.168.20.30 master
192.168.20.31 slave01
192.168.20.32 slave02

保存并退出

同步到两台子机上

复制代码
scp /etc/hosts root@slave01:/etc/
scp /etc/hosts root@slave02:/etc/

输入yes

输入密码后回车(没有提示的)

第二台同理

免密登录

先退出root用户,直接

复制代码
exit

在master上生成密钥

复制代码
ssh-keygen

回车

继续回车

一直回车

拷贝密钥到需要免密登录的机器

master slave01 slave02三台机器

复制代码
ssh-copy-id slave02
ssh-copy-id slave01
ssh-copy-id master

输入yes,随后输入密码,回车

另外两台同理

测试免密登录

复制代码
ssh slave01
ssh slave02
ssh master

不需要输入密码就说明成功了(如若不成功检查防火墙,重新生成密钥并发送到三个节点 ,并确认你的当前用户是hd)

exit退出

格式化Hadoop

只需要在master上格式化

复制代码
hadoop namenode -format

( )( )启动!!!

启动Hadoop集群

start-dfs.sh 启动HDFS分布式文件系统,停止stop-dfs.sh

start-yarn.sh 启动Yarn资源管理器,停止stop-yarn.sh

start-all.sh HDFS分布式文件系统与Yarn启动,停止stop-all.sh

主要使用 一键启动所有

复制代码
start-all.sh

如要停止,使用

复制代码
stop-all.sh

启动卡住没有datanode解决办法

启动Hadoop后 没有DataNode进程 的解决方法_hadoop没有datanode-CSDN博客

中途提示Host key verification failed解决办法

解决Host key verification failed.(亲测有效)-CSDN博客

使用jps查看启动服务

master服务如图

两个slave服务如图

hdfs 文件系统访问地址:http://192.168.20.30:50070

ip根据自己实际情况而设置

Yarn资源管理器访问地址:http://192.168.20.30:8088

ip根据自己实际情况而设置

相关推荐
黑客笔记1 小时前
攻防世界-XCTF-Web安全最佳刷题路线
大数据·安全·web安全
伤不起bb1 小时前
Kafka 消息队列
linux·运维·分布式·kafka
软件测试小仙女1 小时前
鸿蒙APP测试实战:从HDC命令到专项测试
大数据·软件测试·数据库·人工智能·测试工具·华为·harmonyos
Hello.Reader1 小时前
Git 安装全攻略Linux、macOS、Windows 与源码编译
linux·git·macos
龙仔7251 小时前
华为云CentOS配置在线yum源,连接公网后,逐步复制粘贴,看好自己对应的版本即可,【新手必看】
linux·centos·华为云
tiging1 小时前
centos实现SSH远程登录
linux·centos·ssh
Elastic 中国社区官方博客2 小时前
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
大数据·人工智能·elasticsearch·搜索引擎·云计算·全文检索·aws
好多知识都想学2 小时前
Linux 文件处理器 sed 和 awk 详细讲解
linux·运维·ubuntu
反向跟单策略2 小时前
期货反向跟单运营逻辑推导思路
大数据·人工智能·数据分析·区块链
Johny_Zhao3 小时前
阿里云数据库Inventory Hint技术分析
linux·mysql·信息安全·云计算·系统运维