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

  • 一、安装VMware
  • 二、创建Linux虚拟机
  • 三、CentOS-7安装
  • 四、Linux系统环境配置
  • 五、其他配置
  • 六、虚拟机克隆
  • 七、jdk安装
  • 八、ZooKeepper安装
  • 九、Hadoop安装
  • 十、MySQL安装
  • 十一、Hive安装
  • 十二、Hbase安装
  • 十三、Redis安装
  • 十四、Kafka安装
  • 十五、Scala安装
  • 十六、Spark安装
  • 附录
    • xshell安装与配置使用
    • xftp安装与配置使用
    • RedisDesktopManager安装与配置使用
    • 快照

一、安装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安装

节点 NameNode DataNode ZooKeeper ZKFC JournalNode ResourceManager NodeManager
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/namedatanode 默认存放路径 :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 6netstat -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 stablesource /usr/local/rvm/scripts/rvmrvm 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安装

dn1 dn2 dn3
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安装

节点 Master Worker Worker
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. 点击“管理此虚拟机的快照”可查看所有快照,选中某一快照后,点击“转到”,可进行虚拟机状态回调

Hadoop/Spark集群搭建图文全攻略相关推荐

  1. Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门

    目录 一.Spark 概述 1.1. Spark是什么 1.2. Spark的特点(优点) 1.3. Spark组件 1.4. Spark和Hadoop的异同 二.Spark 集群搭建 2.1. Sp ...

  2. 基于Hadoop集群的Spark集群搭建

    基于Hadoop集群的Spark集群搭建 注:Spark需要依赖scala,因此需要先安装scala 一. 简单叙述一下scala的安装 (1)下载scala软件安装包,上传到集群 (2)建立一个用于 ...

  3. Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

    Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...

  4. Windows家庭版下基于Docker的hadoop、Spark集群搭建

    Windows家庭版下基于Docker的hadoop.Spark集群搭建 目录 Windows家庭版下基于Docker的hadoop.Spark集群搭建 1.实验目的 2.实验平台 3.实验内容和要求 ...

  5. Mac M1搭建hadoop+spark集群教程

    最近一直在搞Mac虚拟机,尝试了parallel.vmware.utm,感觉效果都不是很好,踩了了很多很多坑,parallel破解直接劝退我,并且也不是很稳定:wmware for m1刚开始装了一次 ...

  6. Spark集群搭建中的问题

    参照<Spark实战高手之路>学习的,书籍电子版在51CTO网站 资料链接 Hadoop下载[链接](http://archive.apache.org/dist/hadoop/core/ ...

  7. CDH大数据平台搭建之SPARK集群搭建

    CDH大数据平台搭建之SPARK集群搭建 一.安装规划 二.下载 三.安装及配置 1.解压 2.修改配置文件 四.启动 五.JPS检查节点 一.安装规划 参考CHD大数据平台搭建之集群规划 二.下载 ...

  8. hadoop分布式集群搭建

    hadoop集群搭建前的准备(一定要读):https://blog.51cto.com/14048416/2341450 hadoop分布式集群搭建: 1. 集群规划: 2.具体步骤: (1)上传安装 ...

  9. Hadoop+Spark 集群部署

    研究了几天 Hadoop+Spark 集群部署,虽然现在还是有点不懂(一脸懵B),想写下自己的总结,日后有新的发现再补充. 我安装时候的参考教程: http://www.powerxing.com/i ...

最新文章

  1. java 写文件 错误码_JAVA-读取文件错误1(错误)
  2. AlarmManager使用注意事项
  3. Service startService方式的服务
  4. 企业微信H5开发使用微信开发者工具
  5. 离散LQR与iLQR的推导思路
  6. 什么是H5?有哪些特点?
  7. python爬取豆瓣书评排行榜_爬虫:爬取豆瓣读书排行榜
  8. 用Python带大家写个自动生成艺术签名的小工具哟~
  9. 电脑哪个服务器可以玩无限连击,无尽之剑3手把手教你无限连击攻略
  10. android检测cup温度工具,android – 如何获得CPU温度?
  11. 中医证型关联规则挖掘Python代码【完整】
  12. Qt解决资源文件中添加图片,对应控件不显示图片的问题
  13. unable to access ‘https://code.srdcloud.cn/a/ifst/ifst-fe/‘: Failed to connect to code.srdcloud.c
  14. 网络优化之“弱覆盖与过覆盖”
  15. 三大主流Mac清理软件实测:Cleaner One | 柠檬清理 | CleanmyMac
  16. 段永平“徒孙”沈义人:30岁当OPPO副总裁,取代刘强东成宿迁之光
  17. Java中字符串开头,java中如何判断字符串是以什么开头
  18. 高德标签label样式
  19. 系统可靠性、安全性及系统性能评测
  20. An基本工具介绍之选择线条工具(包教会)

热门文章

  1. xshell6的安装和使用
  2. swftools java_SWFTools pdf2swf 参数详解 及中文乱码问题
  3. android 微信 去广告插件,Xposed去除微信朋友圈广告
  4. SkeyeRTSPLive传统视频监控互联网+实现利器解决方案
  5. 如何注册ArcGIS教学试用版账号
  6. 马保国一年能挣多少钱?
  7. 解决Adobe Arcobat Reader DC打开PDF提示:正在准备文档以供阅读,请稍后
  8. 在宜家兼职收银员创收
  9. Android开发--使用实体类解析JSON文本
  10. 2022前端面试必问的几个小问题,你学费了吗?