Hadoop/Spark集群搭建图文全攻略

一、安装VMware

  1. 双击打开安装包,点击“下一步”
    在这里插入图片描述
  2. 勾选“我接受许可协议中的条款”,点击“下一步”在这里插入图片描述
  3. 设置安装路径,建议提前新建文件夹,并重命名(不建议安装在C盘),点击“下一步”在这里插入图片描述
  4. 取消掉两个勾选,点击“下一步”
    在这里插入图片描述
  5. 直接点击“下一步”
    在这里插入图片描述
  6. 点击“安装”,开始安装
    在这里插入图片描述
  7. 等待安装完成
    在这里插入图片描述
  8. 安装完成
    在这里插入图片描述
  9. 打开VMware
    在这里插入图片描述

二、创建Linux虚拟机

  1. 点击“创建新的虚拟机”
    在这里插入图片描述
  2. 默认配置,直接点击“下一步”
    在这里插入图片描述
  3. 指定iso文件路径,点击“下一步”
    在这里插入图片描述
  4. 按照前期规划,为虚拟机命名,并指定虚拟机安装位置(不建议安装到C盘),点击“下一步”(c此处手残打错了,不是nm1,而是nn1)
    在这里插入图片描述
  5. 为虚拟机分配磁盘空间,默认20G,点击“下一步”
    在这里插入图片描述
  6. 点击“完成”
    在这里插入图片描述

三、CentOS-7安装

  1. 点击“开启此虚拟机”
    在这里插入图片描述
  2. 单机黑屏区域(可按ctrl+alt释放鼠标),按“↑”键选择“Install CsntOS 7”,回车
    在这里插入图片描述
  3. 选择简体中文,点击“继续”
    在这里插入图片描述
  4. 等待其自动检测完成,图中三项变黑
    在这里插入图片描述
    在这里插入图片描述
  5. 点击“安装位置”,之后直接点击左上角“完成”
    在这里插入图片描述
  6. 点击“网络和主机名”,开启以太网在这里插入图片描述
    记录IP地址,点击左上角“完成”,返回上一界面后,点击右下角“开始安装”
    在这里插入图片描述
  7. 点击“ROOT密码”设置root用户密码为123456
    在这里插入图片描述
  8. 安装完成,点击“重启”
    在这里插入图片描述
  9. 键入用户名root和密码123456
    在这里插入图片描述
  10. 登陆成功
    在这里插入图片描述

四、Linux系统环境配置

  1. 打开VMware“编辑”菜单下的“虚拟网络编辑器”
    在这里插入图片描述
  2. 点击右下角“更改配置”
    在这里插入图片描述
  3. 选择VMnet8,将下方的子网IP更改成与当前Linux系统ip同一网段,点击“NAT设置”,对网关IP进行更改,设置成“xxx.xxx.xxx.2”
    在这里插入图片描述
    在这里插入图片描述
  4. 键入已下代码,查看网卡配置文件
cd /etc/sysconfig/network-scripts
  1. 执行“ip addr”命令查看网卡
    在这里插入图片描述
  2. 执行ls命令,查看文件,第一个即为网卡配置
    在这里插入图片描述
  3. 执行vi或vim命令,按照下图进行更改并保存(此部分修改#号后部分,请仔细检查)
    在这里插入图片描述
  4. 重启服务
service network restart

在这里插入图片描述

  1. 重启后,测试网络连通,成功
ping www.baidu.com

在这里插入图片描述

  1. 关闭防火墙:查看防火墙状态
firewall-cmd --state

在这里插入图片描述

  1. 临时关闭防火墙,开机还会启动
systemctl stop firewalld

在这里插入图片描述

  1. 设置开机不启动
systemctl disable firewalld

在这里插入图片描述

五、其他配置

  1. 常用软件安装
yum -y install vim
yum -y install wget
yum -y install lrzsz
yum -y install net-tools
yum -y install psmisc
  1. 配置阿里yum源
    备份当前yun源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载阿里云的yum源配置

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清楚原来的缓存,构建新缓存

yum clean all
yum makecache
  1. 执行以下命令添加节点信息
“vim /etc/hosts”

在这里插入图片描述

  1. 配置节点之间免密访问(简便方案,在一台机器上执行,再将该节点克隆四份即可)
    在家目录下,执行以下代码生成密钥对,一路回车即可:
ssh-keygen -t rsa -P ''

将公钥文件写入授权文件中,并赋予权限

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
  1. 修改hostname(修改完成后重启生效)
hostname #查看当前hostname
hostnamectl set-hostname nn1 #修改hostname为nn1
  1. 节点间免密访问测试(六、虚拟机克隆 完成后进行)
    在这里插入图片描述
    任意两台节点都需要测试,第一次需要输入“yes”

六、虚拟机克隆

  1. 将虚拟机关机,右击虚拟机,单机“管理”-“克隆”
    在这里插入图片描述
  2. 点击“下一步”
    在这里插入图片描述
  3. 点击“下一步”
    在这里插入图片描述
  4. 选择“创建完整克隆”,点击“下一步”
    在这里插入图片描述
  5. 按照规划,重命名,选择安装位置,点击“完成”
    在这里插入图片描述
  6. 克隆成功
    在这里插入图片描述
  7. 依照上述步骤,按照前期规划,共克隆四台节点,并修改IP(参考四.4.5.6.7.8.9)与hostname(参考五.5)

在这里插入图片描述

七、jdk安装

  1. 打开jdk官方下载地址,登陆Oracle账号,勾选接受,下载jdk-8u241-linux-64.rpm
    在这里插入图片描述
  2. 也可以在百度云下载
  3. 在目标虚拟机家目录下新建pkg文件夹,将使用xftp将安装文件上传至该目录下
mkdir pkg
  1. 也可使用rz命令上传,如果未安装,可执行“yum -y install lrzsz”命令进行安装
    在这里插入图片描述
    执行ll查看,上传成功
    在这里插入图片描述
  2. 执行以下命令进行安装(如果与我的jdk版本不同,请注意修改安装包名称)
rpm -ivh jdk-8u241-linux-x64.rpm
  1. 安装完成后,会在/usr目录下出现java目录
    在这里插入图片描述
  2. 配置环境变量
vim /etc/profile

在末尾添加以下代码并保存

export JAVA_HOME=/usr/java/jdk1.8.0_241-amd64
export PATH=$PATH:$JAVA_HOME/bin

执行以下代码使修改生效

source /etc/profile
  1. 查看java版本,与安装版本一直,则环境变量修改成功
java -version

在这里插入图片描述

  1. 执行以下命令,在其他四台节点安装
#在家创建pkg文件夹
ssh nn2 mkdir pkg
ssh dn1 mkdir pkg
ssh dn2 mkdir pkg
ssh dn3 mkdir pkg

#将nn1节点上的安装包分发到其他节点
scp -r ~/pkg/jdk-8u241-linux-x64.rpm nn2:~/pkg
scp -r ~/pkg/jdk-8u241-linux-x64.rpm dn1:~/pkg
scp -r ~/pkg/jdk-8u241-linux-x64.rpm dn2:~/pkg
scp -r ~/pkg/jdk-8u241-linux-x64.rpm dn3:~/pkg

#安装
ssh nn2 rpm -ivh ~/pkg/jdk-8u241-linux-x64.rpm
ssh dn1 rpm -ivh ~/pkg/jdk-8u241-linux-x64.rpm
ssh dn2 rpm -ivh ~/pkg/jdk-8u241-linux-x64.rpm
ssh dn3 rpm -ivh ~/pkg/jdk-8u241-linux-x64.rpm

#将nn1节点的配置好的环境变量覆盖到其他节点
scp -r /etc/profile nn2:/etc/profile
scp -r /etc/profile dn1:/etc/profile
scp -r /etc/profile dn2:/etc/profile
scp -r /etc/profile dn3:/etc/profile

#使修改生效
ssh nn2 source /etc/profile
ssh dn1 source /etc/profile
ssh dn2 source /etc/profile
ssh dn3 source /etc/profile

#查看是否成功
ssh nn2 java -version
ssh dn1 java -version
ssh dn2 java -version
ssh dn3 java -version
  1. 全部成功
    在这里插入图片描述
  2. 对所有节点进行快照(参看 附录.快照)

八、ZooKeepper安装

节点NameNodeDataNodeZooKeeperZKFCJournalNodeResourceManagerNodeManager
nn1
nn2
dn1
dn2
dn3
  1. 下载zookeeper-3.4.14压缩包-华中科技大学镜像
  2. 将文件上传到dn1、dn2、dn3三台节点~/pkg目录下
  3. 执行以下命令,在dn1、dn2、dn3三台节点安装zookeeper
#将压缩包解压到/opt
ssh dn1 tar -zxvf ~/pkg/zookeeper-3.4.14.tar.gz -C /opt
ssh dn2 tar -zxvf ~/pkg/zookeeper-3.4.14.tar.gz -C /opt
ssh dn3 tar -zxvf ~/pkg/zookeeper-3.4.14.tar.gz -C /opt
#创建软连接
ssh dn1 ln -sf /opt/zookeeper-3.4.14  /opt/zookeeper
ssh dn2 ln -sf /opt/zookeeper-3.4.14  /opt/zookeeper
ssh dn3 ln -sf /opt/zookeeper-3.4.14  /opt/zookeeper
  1. 修改dn1环境变量,之后分发到dn2和dn3
vim /etc/profile

#在末尾增加以下内容,然后保存
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#分发到dn2和dn3
scp -r /etc/profile dn2:/etc
scp -r /etc/profile dn3:/etc

#使配置生效
ssh dn1 source /etc/profile
ssh dn2 source /etc/profile
ssh dn3 source /etc/profile
  1. zookeeper设置
#在dn1上修改zoo_sample.cfg zoo.cfg
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg

#清空 zoo.cfg文件内容,写入如下内容:
tickTime=2000
dataDir=/opt/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=dn1:2888:3888
server.2=dn2:2888:3888
server.3=dn3:2888:3888

#将修改后的两个文件分发到其它两个节点
scp -r /opt/zookeeper/conf/zoo_sample.cfg dn2:/opt/zookeeper/conf/zoo_sample.cfg
scp -r /opt/zookeeper/conf/zoo_sample.cfg dn3:/opt/zookeeper/conf/zoo_sample.cfg
scp -r /opt/zookeeper/conf/zoo.cfg dn2:/opt/zookeeper/conf/zoo.cfg
scp -r /opt/zookeeper/conf/zoo.cfg dn3:/opt/zookeeper/conf/zoo.cfg

#在dn1、dn2、dn3节点分别创建/opt/data/zookeeper
ssh dn1 mkdir -p /opt/data/zookeeper
ssh dn2 mkdir -p /opt/data/zookeeper
ssh dn3 mkdir -p /opt/data/zookeeper

#创建节点ID,在每台节点配置的dataDir路径/opt/data/zookeeper中添加myid文件
#在dn1的/opt/data/zookeeper中创建myid文件写入1
#在dn2的/opt/data/zookeeper中创建myid文件写入2
#在dn3的/opt/data/zookeeper中创建myid文件写入3

#每台节点中启动zookeeper
zkServer.sh start
#检查每台节点zookeeper的状态
zkServer.sh status
  1. 查看三台节点zookeeper状态发现,一台节点为leader,两台为follower
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 对dn1、dn2、dn3节点进行快照

九、Hadoop安装

  1. 下载hadoop-3.1.3压缩包
  2. 将文件上传到nn1节点~/pkg目录下
  3. 执行以下命令,在nn1、nn2、dn1、dn2、dn3五台节点安装
#解压到/opt目录
tar -zxvf hadoop-3.1.3.tar.gz -C /opt

#创建hadoop的软连接
cd /opt
ln -sf hadoop-3.1.3 hadoop

#配置环境变量
vim /etc/profile

#在末尾增加以下内容,然后保存
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

#使配置生效
source /etc/profile
  1. 配置高可用的HDFS和YARN
    配置hadoop-env.sh
vim /opt/hadoop/etc/hadoop/hadoop-env.sh

#添加以下内容并保存
export JAVA_HOME=/usr/java/jdk1.8.0_241-amd64

配置hdfs-site.xml

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

#在<configuration>和</configuration>中间,添加以下内容
 <property>
        <!--这里配置逻辑名称,可以随意写 -->
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <!-- 禁用权限 -->
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <property>
        <!-- 配置namenode 的名称,多个用逗号分割  -->
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <!-- dfs.namenode.rpc-address.[nameservice ID].[name node ID] namenode 所在服务器名称和RPC监听端口号  -->
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>nn1:8020</value>
    </property>
    <property>
        <!-- dfs.namenode.rpc-address.[nameservice ID].[name node ID] namenode 所在服务器名称和RPC监听端口号  -->
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>nn2:8020</value>
    </property>
    <property>
        <!-- dfs.namenode.http-address.[nameservice ID].[name node ID] namenode 监听的HTTP协议端口 -->
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>nn1:50070</value>
    </property>
    <property>
        <!-- dfs.namenode.http-address.[nameservice ID].[name node ID] namenode 监听的HTTP协议端口 -->
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>nn2:50070</value>
    </property>

    <property>
        <!-- namenode 共享的编辑目录, journalnode 所在服务器名称和监听的端口 -->
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://dn1:8485;dn2:8485;dn3:8485/mycluster</value>
    </property>

    <property>
        <!-- namenode高可用代理类 -->
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <property>
        <!-- 使用ssh 免密码自动登录 -->
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>

    <property>
        <!-- journalnode 存储数据的地方 -->
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/data/journal/node/local/data</value>
    </property>

    <property>
        <!-- 配置namenode自动切换 -->
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>

配置core-site.xml

#在<configuration>和</configuration>中间,添加以下内容
<property>
        <!-- 为Hadoop 客户端配置默认的高可用路径  -->
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <property>
        <!-- Hadoop 数据存放的路径,namenode,datanode 数据存放路径都依赖本路径,不要使用 file:/ 开头,使用绝对路径即可
            namenode 默认存放路径 :file://${hadoop.tmp.dir}/dfs/name
            datanode 默认存放路径 :file://${hadoop.tmp.dir}/dfs/data
        -->
        <name>hadoop.tmp.dir</name>
        <value>/opt/data/hadoop/</value>
    </property>

    <property>
        <!-- 指定zookeeper所在的节点 -->
        <name>ha.zookeeper.quorum</name>
        <value>dn1:2181,dn2:2181,dn3:2181</value>
    </property>

配置yarn-site.xml

 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</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>
        <!-- 配置yarn为高可用 -->
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <!-- 集群的唯一标识 -->
        <name>yarn.resourcemanager.cluster-id</name>
        <value>mycluster</value>
    </property>
    <property>
        <!--  ResourceManager ID -->
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <!-- 指定ResourceManager 所在的节点 -->
        <name>yarn.resourcemanager.hostname.rm1</name>
         <value>nn1</value>
    </property>
    <property>
        <!-- 指定ResourceManager 所在的节点 -->
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>nn2</value>
    </property>
    <property>
        <!-- 指定ResourceManager Http监听的节点 -->
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>nn1:8088</value>
    </property>
    <property>
        <!-- 指定ResourceManager Http监听的节点 -->
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>nn2:8088</value>
    </property>
    <property>
        <!-- 指定zookeeper所在的节点 -->
        <name>yarn.resourcemanager.zk-address</name>
        <value>dn1:2181,dn2:2181,dn3:2181</value>
    </property>

	<!-- 启用节点的内容和CPU自动检测,最小内存为1G -->
    <!--<property>
        <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
        <value>true</value>
    </property>-->

配置mapred-site.xml

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

将配置好的hadoop目录发送到每一个节点

cd /opt
scp -r ./hadoop nn2:`pwd`
scp -r ./hadoop dn1:`pwd`
scp -r ./hadoop dn2:`pwd`
scp -r ./hadoop dn3:`pwd`

配置datanode节点

cd /opt/hadoop/etc/hadoop
echo dn1 > workers
echo dn2 >> workers
echo dn3 >> workers

分别在nn2、dn1、dn2、dn3中配置hadoop的环境变量

  1. 启动HDFS和YARN
#启动zookeeper,在dn1、dn2、dn3三个节点上启动
zkServer.sh start

#在其中一个namenode(nn1)中格式化zookeeper
hdfs zkfc -formatZK

#在每台journalnode(dn1、dn2、dn3)中启动所有的journalnode:
/opt/hadoop/bin/hdfs --daemon start journalnode

#在nn1中格式化namenode
hdfs namenode -format

#在nn1中启动namenode
hdfs --daemon start namenode

#高可用模式配置namenode,使用下列命令来同步namenode(在nn2中执行):
hdfs namenode -bootstrapStandby

#在nn1执行,启动HDFS和YARN:
start-dfs.sh
start-yarn.sh
  1. 注意
    如果启动报以下错误:
    在这里插入图片描述
    需要修改
#进入/opt/hadoop/sbin
cd /opt/hadoop/sbin
#在start-dfs.sh和stop-dfs.sh中添加以下内容
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
#在start-yarn.sh和stop-yarn.sh中添加以下内容
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
  1. 对所有节点进行快照

十、MySQL安装

  1. 下载mysql压缩包
  2. 按照下图所示,选择“Linux-Generic”,找到下方的“Linux-Generic(glibc2.12)(x86,64bit),tar”,点击右侧的“download”,跳转到新页面
    在这里插入图片描述
  3. 选择不登录,直接下载
    在这里插入图片描述
  4. 下载速度特别慢,可将下载地址复制到迅雷下载
    在这里插入图片描述
  5. 网速飞快
    在这里插入图片描述
  6. 将压缩包解压得到三个文件,将“mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz”解压,得到“mysql-8.0.19-linux-glibc2.12-x86_64.tar”压缩包
    在这里插入图片描述
    在这里插入图片描述
  7. 将得到的“mysql-8.0.19-linux-glibc2.12-x86_64.tar”上传到nn2
    在这里插入图片描述
  8. 一般默认将mysql安装到/usr/local/mysql目录下,也可以指定某些特定的路径,但是mysql在liunx中会默认找/usr/local/路径,所以我们安装在此目录下
#将压缩包解压到/usr/local目录下
tar -xvf ~/pkg/mysql-8.0.19-linux-glibc2.12-x86_64.tar -C /usr/local/

#创建软连接
ln -s mysql-8.0.19-linux-glibc2.12-x86_64/ mysql

#创建mysql数据存放目录
mkdir /usr/local/mysql/mysqldb

#创建mysql用户组
groupadd mysql

#创建MySQL用户但该用户不能登陆(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限)
useradd -r -g mysql -s /bin/false mysql

#更改/usr/local/mysql下文件的拥有者为mysql
chown -R mysql:mysql /usr/local/mysql/
  1. 修改MySQL初始化配置文件,vim /etc/my.cnf,把[mysql-safe去掉], 将文件内容修改为以下内容,可直接复制
[mysqld]
#设置3306端口
port=3306
#设置mysql的安装目录
basedir=/usr/local/mysql
#设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysqldb
#允许最大连接数
max_connections=10000
#允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#服务端使用的字符集默认为UTF8
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[client]
#设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
  1. 初始化mysql
#进入/usr/local/mysql/bin/目录
cd /usr/local/mysql/bin/

#初始化mysql,记住初始密码(建议复制到记事本)
./mysqld --initialize --console
  1. 记住初始密码(建议复制到记事本)
    在这里插入图片描述
  2. 启动mysql
cd /usr/local/mysql/support-files/

#更改/usr/local/mysql下所有文件的执行权限
chmod -R 777 /usr/local/mysql

#启动MySQL
./mysql.server start
  1. 修改随即登录密码
#修改随机登录密码,设置允许远程登录
/usr/local/mysql/bin/mysql -u root -p

#成功登陆mysql后,修改密码(修改完后,使用quit命令退出mysql)
alter user  'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
  1. 设置MySQL开机启动:
将MySQL加入系统进程中:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#重启MySQL
service mysqld restart
#赋予可执行权限
chmod +x /etc/init.d/mysqld
#添加服务
chkconfig --add mysqld
#显示服务列表,如果看到mysql的服务,并且3,4,5都是“开”的话则成功,如果是“关”,则键入:chkconfig --level 345 mysqld on
chkconfig  --list
#重启电脑,检测:
  init 6
  netstat -na | grep 3306
  1. 修改环境变量
#配置mysql环境变量
vim /etc/profile
#在末尾增加以下内容,然后保存
export PATH=$PATH:/usr/local/mysql/bin
#使配置生效
source /etc/profile
  1. 启动之后,浏览器登陆192.168.149.128:50070和192.168.149.128:50070查看nn1与nn2状态,发现一个为active一个为standby状态
    在这里插入图片描述
  2. kill掉active节点的namenode进程,查看原standby节点是否切换为active
  3. 若切换失败,查看/opt/hadoop/logs下的hadoop-root-zkfc-nn1.log,发现HA不能切换是因为nn1和nn2的没有安装fuser
    在这里插入图片描述
  4. 在nn1和nn2上执行,安装完成后,重新启动集群,再次测试成功
yum -y install psmisc
  1. 对nn1和nn2节点进行快照

十一、Hive安装

  1. Hive安装采用多用户模式,有服务端和客户端
节点Hive服务端Hive客户端mysql管理原数据
nn1
nn2
dn1
  1. 下载Hive压缩包-华中科技大学镜像
  2. 将文件上传到nn1节点~/pkg目录下
  3. 执行以下命令,在nn1安装Hive
#解压到/opt目录
 tar -zxvf ~/pkg/apache-hive-3.1.2-bin.tar.gz -C /opt/

#创建Hive的软连接
cd /opt
ln -s ./apache-hive-3.1.2-bin/ hive

#发送到dn1节点
scp -r ./hive/ dn1:`pwd`

#在nn1和dn1节点上配置Hive环境变量
vim /etc/profile

#在末尾增加以下内容,然后保存
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin

#在nn1和dn1节点上使配置生效
source /etc/profile

#在nn1及dn1节点创建/opt/hive/conf/hive-site.xml
cp /opt/hive/conf/hive-default.xml.template /opt/hive/conf/hive-site.xml

#修改nn1的hive-site.xml为以下内容
#注意mysql8.0的JDBC驱动由com.mysql.jdbc.Driver变成了com.mysql.cj.jdbc.Driver
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://nn2:3306/hive?createDatabaseIfNotExist=true</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.cj.jdbc.Driver</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123456</value>
 </property>
</configuration>

#修改dn1的hive-site.xml为以下内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
 </property>
 <property>
  <name>hive.metastore.local</name>
  <value>false</value>
 </property>
 <property>
  <name>hive.metastore.uris</name>
  <value>thrift://dn1:9083</value>
 </property>
</configuration>
  1. 下载mysql-connector-java-8.0.19.jar
  2. 选择“Platform Independent”,点击第一个“Download”
    在这里插入图片描述
  3. 点击下面的“No thanks,just start my download”
    在这里插入图片描述
  4. 解压压缩包,得到“mysql-connector-java-8.0.19.jar”
    在这里插入图片描述
  5. 上传到nn1的/opt/hive/lib目录下
  6. 进行初始化
schematool -dbType mysql -initSchema
  1. 发现报错
    在这里插入图片描述
  2. 问题解决:由于jar包版本不一致,将nn1节点/opt/hive/lib路径下的guava-19.0.jar替换成/opt/hadoop/share/hadoop/common/lib下的guava-27.0-jre.jar即可
  3. 再次初始化,成功
    在这里插入图片描述
  4. 启动hive
    在这里插入图片描述
  5. 对nn1、nn2和dn1节点进行快照

十二、Hbase安装

  1. 下载hbase-2.2.3压缩包
  2. 将文件上传到dn1节点~/pkg目录下
  3. 执行以下命令,分别在dn1、dn2、dn3三台节点安装
#解压到/opt目录
tar -zxvf hbase-2.2.3-bin.tar.gz -C /opt

#创建hbase的软连接
cd /opt
ln -s hbase-2.2.3/ hbase

#在hbase-env.sh中添加以下内容,然后保存
export JAVA_HOME=/usr/java/jdk1.8.0_241-amd64
export HBASE_MANAGES_ZK=false

#将解压后的hbase目录分发到dn2和dn3
scp -r /opt/hbase dn2:/opt/hbase
scp -r /opt/hbase dn3:/opt/hbase

#在dn1、dn2、dn3分别配置环境变量
vim /etc/profile

#在末尾增加以下内容,然后保存
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
export PATH=$PATH:$HBASE_HOME/sbin

#在三个节点分别使配置生效
source /etc/profile

  1. 配置hbase-site.xml
vim /opt/hbase/conf/hbase-site.xml

#在<configuration>和</configuration>中间,添加以下内容
<!--  这个目录是region服务器共享的目录,用来持久存储HBase的数据,默认值为:${hbase.tmp.dir}/hbase,如果不修改这个配置,数据将会在集群重启时丢失。 -->
    <property>
        <name>hbase.rootdir</name>
        <!-- hadoop引入JQM负载均衡时,这里配置dfs.nameservices指定的集群逻辑名称 -->
        <value>hdfs://mycluster/hbase</value>
        <!-- 指定Hadoop master服务器的写法,hbase监听hdfs默认的端口是9000,这里的配置端口只能写9000 -->
        <!--<value>hdfs://hadoop.master01:9000/hbase</value>-->
    </property>
    
    <!-- 指定hbase集群为分布式集群 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    
    <!-- 指定zookeeper集群,有多个用英文逗号分隔 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>dn1:2181,dn2:2181,dn3:2181</value>
    </property>
    <!-- Zookeeper元数据快照的存储目录(需要和Zookeeper的zoo.cfg 配置文件中的属性一致)  -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/data/zookeeper/data</value>
    </property>
    <!-- 指定HBase Master web页面访问端口,默认端口号16010 -->
    <property>
        <name>hbase.master.info.port</name>
        <value>16010</value>
    </property>
    <!-- 指定HBase RegionServer web页面访问端口,默认端口号16030 -->
	<property>
		<name>hbase.regionserver.info.port</name>
		<value>16030</value>
	</property>
    <!-- 解决启动HMaster无法初始化WAL的问题 -->
<property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
</property>

将配置好的hbase-site.xml文件发送到dn2和dn3节点

scp -r ./hbase-site.xml dn2:`pwd`
scp -r ./hbase-site.xml dn3:`pwd`
  1. 将/opt/hadoop/etc/hadoop/目录下的core-site.xml及hdfs-site.xml文件复制到/opt/hbase/conf下
#分别在dn1、dn2、dn3三台节点上做复制
cp /opt/hadoop/etc/hadoop/core-site.xml /opt/hbase/conf/core-site.xml
cp /opt/hadoop/etc/hadoop/hdfs-site.xml /opt/hbase/conf/hdfs-site.xml
  1. 启动hbase服务
start-hbase.sh
  1. 查看进程,dn1有Hmaster,dn2和dn3有HRegionServer,启动成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 进入hbase,成功
hbase shell

在这里插入图片描述

  1. hbase退出命令为exit,hbase服务终止命令为stop-hbase.sh

十三、Redis安装

请选择一种方式安装

单机安装

  1. 下载redis-5.0.7压缩包
  2. 将文件分别上传到dn1节点~/pkg目录下
  3. 执行以下命令,在dn1节点安装
#解压到/opt目录
tar -zxvf redis-5.0.7.tar.gz -C /opt

#创建redis的软连接
cd /opt
ln -sf redis-5.0.7 redis

#安装gcc环境
yum install gcc-c++

#进行编译
cd /opt/redis
make

#编译完成后执行
cd /opt/redis/src
make install

#修改配置文件
vim /opt/redis/redis.conf

  1. 修改redis.conf中的以下条目
#改为yes
daemonize yes
#注释掉以下行
#bind 127.0.0.1
protected-mode no
  1. 设置开机启动
vim /etc/rc.d/rc.local
#追加以下内容
/opt/redis/src/redis-server /opt/redis/redis.conf
  1. 启动服务
/opt/redis/src/redis-server /opt/redis/redis.conf
  1. 启动客户端

redis-cli 

多机安装

  1. 下载redis-5.0.7压缩包
  2. 将文件分别上传到dn1、dn2、dn3节点~/pkg目录下
  3. 执行以下命令,分别在dn1、dn2、dn3节点安装(三台节点均需如此操作)
#解压到/opt目录
tar -zxvf redis-5.0.7.tar.gz -C /opt

#创建redis的软连接
cd /opt
ln -sf redis-5.0.7 redis

#安装gcc环境
yum install gcc-c++

#进行编译
cd /opt/redis
make

#编译完成后执行
cd /opt/redis/src
make install

#创建配置文件目录
mkdir /opt/redis/conf6379
mkdir /opt/redis/conf7379

#分别复制配置文件到两个目录下,删除原文件
cp /opt/redis/redis.conf /opt/redis/conf6379/redis.conf
cp /opt/redis/redis.conf /opt/redis/conf7379/redis.conf
rm /opt/redis/redis.conf
  1. 三台节点分别修改/opt/redis/conf6379/redis.conf中的以下条目(注意bind后为当前节点IP)
port 6379
daemonize yes
bind 192.168.149.130
dir /opt/redis/conf6379
pidfile /var/run/redis_6379.pid
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
  1. 三台节点分别修改/opt/redis/conf7379/redis.conf中的以下条目(注意bind后为当前节点IP)
port 7379
daemonize yes
bind 192.168.149.130
dir /opt/redis/conf7379
pidfile /var/run/redis_7379.pid
cluster-enabled yes
cluster-config-file nodes-7379.conf
cluster-node-timeout 15000
appendonly yes
  1. 在三个节点分别设置开机启动
vim /etc/rc.d/rc.local

#追加以下内容
/opt/redis/src/redis-server /opt/redis/conf6379/redis.conf

/opt/redis/src/redis-server /opt/redis/conf7379/redis.conf
  1. 准备Ruby环境,安装RVM
依次执行以下命令(请确保网络畅通)
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -

curl -L get.rvm.io | bash -s stable

source /usr/local/rvm/scripts/rvm

rvm list known              #查看可用版本

rvm install 2.6.3          #安装Ruby,这步比较慢

gem install redis         #安装redis插件这步比较慢
  1. 在三个节点分别启动服务
/opt/redis/src/redis-server /opt/redis/conf6379/redis.conf

/opt/redis/src/redis-server /opt/redis/conf7379/redis.conf
  1. 启动redis集群
redis-cli --cluster create 192.168.149.130:6379 192.168.149.130:7379 192.168.149.131:6379 192.168.149.131:7379 192.168.149.132:6379 192.168.149.132:7379 --cluster-replicas 1

启动成功

在这里插入图片描述

  1. 测试集群
#-c 是指定使用集群模式的客户端
redis-cli -c -h dn1 -p 6379

在这里插入图片描述

  1. 对dn1、dn2、dn3节点进行快照

十四、Kafka安装

dn1dn2dn3
brokers
  1. 下载kafka_2.11-2.4.1压缩包
  2. 将文件上传到dn1节点的~/pkg目录下
  3. 执行以下命令,分别在dn1、dn2、dn3三台节点安装
#解压到/opt目录
cd ~/pkg
tar -xzvf kafka_2.11-2.4.1.tgz -C /opt

#创建kafka的软连接
cd /opt
ln -sf kafka_2.11-2.4.1/ kafka
  1. 配置kafka
#进入/opt/kafka/config修改server.properties
vim /opt/kafka/config/server.properties

#修改以下内容
broker.id=0
log.dirs=/opt/data/kafka-logs    #真实数据存储的位置
zookeeper.connect=dn1:2181,dn2:2181,dn3:2181  #zookeeper集群
  1. 在/opt/kafka/bin目录下建kafka启动脚本
vim /opt/kafka/bin/start-kafka.sh 
nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > kafkalog.txt 2>&1 &
  1. 将解压后的kafka目录分发到dn2和dn3
cd /opt
scp -r kafka dn2:`pwd`
scp -r kafka dn3:`pwd`
  1. 修改dn2、dn3节点中/opt/kafka/config/server.properties的broker.id顺序分别为1,2
vim /opt/kafka/config/server.properties
  1. 修改启动脚本权限
chmod +x /opt/kafka/bin/start-kafka.sh
  1. 在dn1、dn2、dn3分别配置环境变量
vim /etc/profile

#添加以下内容
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin

#分别使三台节点上的环境变量生效
source /etc/profile
  1. kafka测试命令
#创建topic
/opt/kafka/bin/kafka-topics.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --create --topic testtopic  --partitions 3 --replication-factor 3

#查看kafka集群所有与topic
/opt/kafka/bin/kafka-topics.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --list

#console控制台向topic中生产数据
/opt/kafka/bin/kafka-console-producer.sh --broker-list dn1:9092,dn2:9092,dn3:9092 --topic testtopic

#console控制台消费topic中的数据
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server dn1:9092,dn2:9092,dn3:9092  --topic testtopic

在这里插入图片描述
在这里插入图片描述

十五、Scala安装

  1. 下载scala-2.11.8.tgz压缩包
  2. 将文件上传到dn1节点的~/pkg目录下
  3. 执行以下命令,分别在dn1、dn2、dn3三台节点安装
解压到/usr/local/目录下 
tar -zxvf scala-2.11.8.tgz -C /usr/local/

分发到dn2、dn3节点
cd /usr/local
scp -r scala-2.11.8/ dn2:`pwd`
scp -r scala-2.11.8/ dn3:`pwd`
  1. 在三台节点上配置环境变量并使之生效
export SCALA_HOME=/usr/local/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
  1. 查看scala版本
scala -version

在这里插入图片描述

十六、Spark安装

节点MasterWorkerWorker
dn1
dn2
dn3
  1. 下载spark-2.3.4-bin-hadoop2.7.tgz压缩包
  2. 将文件上传到dn1节点的~/pkg目录下
  3. 执行以下命令,分别在dn1、dn2、dn3三台节点安装
#解压到/opt目录
cd ~/pkg
tar -xzvf spark-2.3.4-bin-hadoop2.7.tgz -C /opt

#创建spark的软连接
cd /opt
ln -sf spark-2.3.4-bin-hadoop2.7/ spark
  1. 配置spark
#配置Worker节点
cp /opt/spark/conf/slaves.template /opt/spark/conf/slaves
vim /opt/spark/conf/slaves

#删除localhost,添加以下内容
dn2
dn3

#配置Master节点
cp /opt/spark/conf/spark-env.sh.template /opt/spark/conf/spark-env.sh
vim /opt/spark/conf/spark-env.sh

#添加以下内容
export SPARK_MASTER_HOST=dn1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=3g

#将解压后的spark目录分发到dn2和dn3
cd /opt
scp -r spark dn2:`pwd`
scp -r spark dn3:`pwd`
  1. 启动spark
/opt/spark/sbin/start-all.sh
  1. 搭建spark提交任务的客户端,将spark目录发送到目标节点即可,我们选择nn1
scp -r spark nn1:`pwd`
  1. 配置spark运行在Yarn上
#进入nn1中
vim /opt/spark/conf/spark-env.sh
#添加以下内容
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  1. 提交sparkPi任务测试
#基于Standalone提交sparkPi任务
/opt/spark/bin/spark-submit --master spark://dn1:7077 --class org.apache.spark.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.11-2.3.4.jar  100

#基于Yarn提交sparkPi任务
/opt/spark/bin/spark-submit --master yarn --class org.apache.spark.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.11-2.3.4.jar  100

附录

xshell安装与配置使用

  1. 下载xshell家庭学校免费版申请地址,申请后,下载链接会发送至邮箱(其中包含xftp下载链接)
  2. 双击打开安装包,点击“下一步”
    在这里插入图片描述
  3. 选择“我接受许可证协议中的条款”,点击“下一步”
    在这里插入图片描述
  4. 用户名及公司名称填写(随意填写),点击“下一步”
    在这里插入图片描述
  5. 修改安装路径,安装路径不建议在C盘,建议提前单独创建文件夹,点击“下一步”
    在这里插入图片描述
  6. 点击“安装”
    在这里插入图片描述
  7. 链接虚拟机,确保虚拟机已经开机(无需登录,开机即可);打开xshell,点击“新建”
    在这里插入图片描述
  8. 键入你需要链接的虚拟机IP(是你的,不要照抄我的)
    在这里插入图片描述
  9. 点击“用户身份验证”,键入用户名和密码,点击“确定”
    在这里插入图片描述
  10. 点击“接收并保存”
    在这里插入图片描述
  11. 链接成功
    在这里插入图片描述

xftp安装与配置使用

  1. 下载xftp家庭学校免费版申请地址,申请后,下载链接会发送至邮箱(其中包含xshell下载链接)
  2. 双击打开安装包,点击“下一步”
    在这里插入图片描述
  3. 选择“我接受许可证协议中的条款”,点击“下一步”
    在这里插入图片描述
  4. 用户名及公司名称填写(随意填写),点击“下一步”
    在这里插入图片描述
  5. 修改安装路径,安装路径不建议在C盘,建议提前单独创建文件夹,点击“下一步”
  6. 点击“安装”
    在这里插入图片描述
  7. 链接虚拟机,确保虚拟机已经开机(无需登录,开机即可);打开xftp,点击“新建”
    在这里插入图片描述
  8. 键入需要链接的虚拟机的IP与账号密码,点击“确定”
    在这里插入图片描述
  9. 链接成功后,左侧为本地文件,右侧默认显示linux虚拟机的家目录,将左侧文件拖拉到右侧即可上传至指定虚拟机目录
    在这里插入图片描述

RedisDesktopManager安装与配置使用

  1. 下载Redis-Desktop-Manager安装包
  2. 双击打开安装包,点击“next”
    **加粗样式**
  3. 点击“i agree”
    在这里插入图片描述
  4. 修改安装路径,安装路径不建议在C盘,点击“Inatall”

在这里插入图片描述

  1. 点击“Next”
    在这里插入图片描述
  2. 点击“Finash”,完成安装

在这里插入图片描述

  1. 点击“连接到Redis服务器”
    在这里插入图片描述
  2. 键入IP与端口号,测试连接
    在这里插入图片描述
  3. 查看数据
    在这里插入图片描述

快照

建议每次正确安装完成某一组件后,对更改后的虚拟机进行快照,方便出现错误时快速回复

  1. 选择需要快照的虚拟机,点击“拍摄此虚拟机的快照”
    在这里插入图片描述
  2. 填写名称及描述,尽量简洁易懂,点击“拍摄快照”
    在这里插入图片描述
  3. 点击“管理此虚拟机的快照”可查看所有快照,选中某一快照后,点击“转到”,可进行虚拟机状态回调
    在这里插入图片描述
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值