赞
踩
前言:最近有小伙伴私信我,flink 软件安装在虚拟机上很简单,就是安装包解压即可,有没有 hadoop + spark 的安装文档呢?所以今天周六刚好不用上班,花了一天时间整理了一下自己现在使用集群的搭建过程,希望对各位小伙伴有帮助!
Tips:以下是集群搭建过程的记录啦,word 文档和搭建好了的集群,我后续会上传资源区啦,有需要的小伙伴后续可以在我的资源区下载哦!希望和大家一起进步,有啥不清楚滴地方可以一起交流! 这一次梳理搭建过程我觉得很有意义,熟悉了各类配置文件之间的关联,以及大数据组件之间的配置关系,很开心和大家分享此文,那就,继续加油吧!
(1)Windows 11
(2)VMware WorkStation Pro 16
(1)创建虚拟机向导,选择自定义(高级)
(2)选择虚拟机兼容性,选择Workstation 16.x
(3)选择稍后安装操作系统,因为待会可以使用自己下载的镜像文件
(4)选择客户机操作系统,肯定选择Linux
(5)命名虚拟机名称node1,并存放在除了c盘以外的文件夹下
(6)处理器配置,因为我的电脑8个逻辑处理器,目前分配虚拟机使用4个
(7)虚拟机内存配置,因为我的电脑16G,目前分配首台虚拟机使用4G
(8)配置网络类型,使用网络地址转换(NAT)(E)
(9)选择I/O控制器类型,使用LSI Logic(L)
(10)选择磁盘类型,使用SCSI(S)
(11)选择磁盘,使用创建新虚拟磁盘
(12)指定磁盘容量,担心后面虚拟机内存不够,故选择60GB
(13)指定磁盘文件,node1.vmdk
(14)虚拟机的模拟硬件已准备好
(15)关联Centos镜像文件
(16)安装虚拟机镜像,启动后一路回车
(17)按下ESC键跳过镜像检测
(18)选择中文版安装,或者英文版安装都可以
(19)想要节约内存,可以选择最小版安装
(20)软件安装选择基本网页服务器
(21)进行安装位置配置
(22)进行网络和主机名配置,主机名为node1
(23)进行虚拟机密码配置
(24)进行虚拟机正式安装
(25)进行虚拟机重启
(26)进入虚拟机登录界面,输入用户名、密码
(27)克隆另外两台虚拟机node2和node3
vi /etc/hostname,将其改为node1,另外两台修改为node2和node3
ifconfig,IP地址:node1是192.168.52.3,node2是192.168.52.4,node3是192.168.52.5
vim /etc/hosts,输入:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.52.3 node1
192.168.52.4 node2
192.168.52.5 node3
与此同时,同步修改windows的C:\Windows\System32\drivers\etc\hosts文件
ping 192.168.52.10
ping www.baidu.com
(1)关闭虚拟机防火墙
#查看/关闭/禁止 防火墙
systemctl status /stop / disable firewalld.service
(2)关闭windows防火墙
rz jdk-8u65-linux-x64.tar.gz,需要安装rz命令(yum install -y lrzsz)
tar -zxvf jdk-8u65-linux-x64.tar.gz -C /export/server
其中,tar命令参数解释如下:
-z:使用解压方式
-x:解压gz的文件
-v:显示解压信息
-f:带解压文件名
-C:指定解压路径
vim /etc/profile
#在文件最后添加
#java_home
export JAVA_HOME=/export/server/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
(三台机器都要配置环境变量)
source /etc/profile 三台机器都需要刷新环境变量
java -version
https://archive.apache.org/dist/
https://archive.apache.org/dist/hadoop/common/
hadoop-3.3.0-src.tar.gz //source 源码包
hadoop-3.3.0.tar.gz //官方编译后安装包
在源码的根目录下有编译相关的文件BUILDING.txt 指导如何编译。
使用maven进行编译 联网jar.
mkdir -p /export/server
yum install gcc gcc-c++ make autoconf automake libtool curl lzo-devel zlib-devel openssl openssl-devel ncurses-devel snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop libXtst zlib -y
yum install -y doxygen cyrus-sasl* saslwrapper-devel*
#yum卸载已安装cmake 版本低
yum erase cmake
#解压
tar zxvf CMake-3.19.4.tar.gz
#编译安装
cd /export/server/CMake-3.19.4
./configure
make && make install
#验证
[root@node1 ~]# cmake -version
cmake version 3.19.4
#如果没有正确显示版本 请断开SSH连接 重写登录
#卸载已经安装的
rm -rf /usr/local/lib/libsnappy*
rm -rf /lib64/libsnappy*
#上传解压
tar zxvf snappy-1.1.3.tar.gz
#编译安装
cd /export/server/snappy-1.1.3
./configure
make && make install
#验证是否安装
[root@node1 snappy-1.1.3]# ls -lh /usr/local/lib |grep snappy
-rw-r--r-- 1 root root 511K Nov 4 17:13 libsnappy.a
-rwxr-xr-x 1 root root 955 Nov 4 17:13 libsnappy.la
lrwxrwxrwx 1 root root 18 Nov 4 17:13 libsnappy.so -> libsnappy.so.1.3.0
lrwxrwxrwx 1 root root 18 Nov 4 17:13 libsnappy.so.1 -> libsnappy.so.1.3.0
-rwxr-xr-x 1 root root 253K Nov 4 17:13 libsnappy.so.1.3.0
#解压安装包
tar zxvf apache-maven-3.5.4-bin.tar.gz
#配置环境变量
vim /etc/profile
export MAVEN_HOME=/export/server/apache-maven-3.5.4
export MAVEN_OPTS="-Xms4096m -Xmx4096m"
export PATH=:$MAVEN_HOME/bin:$PATH
source /etc/profile
#验证是否安装成功
[root@node1 ~]# mvn -v
Apache Maven 3.5.4
#添加maven 阿里云仓库地址 加快国内编译速度
vim /export/server/apache-maven-3.5.4/conf/settings.xml
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
#卸载之前版本的protobuf
#解压
tar zxvf protobuf-3.7.1.tar.gz
#编译安装
cd /export/server/protobuf-3.7.1
./autogen.sh
./configure
make && make install
#验证是否安装成功
[root@node1 protobuf-3.7.1]# protoc --version
libprotoc 3.7.1
#上传解压源码包
tar zxvf hadoop-3.3.0-src.tar.gz
#编译
cd /root/hadoop-3.3.0-src
mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib
#参数说明:
Pdist,native :把重新编译生成的hadoop动态库;
DskipTests :跳过测试
Dtar :最后把文件以tar打包
Dbundle.snappy :添加snappy压缩支持【默认官网下载的是不支持的】
Dsnappy.lib=/usr/local/lib :指snappy在编译机器上安装后的库路径
[root@node1]# cd /root/hadoop-3.3.0-src/hadoop-dist/target
[root@node1]# ll
发现存在hadoop已经编译好的安装压缩包:
Hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
这个包就可以用来安装hadoop3.3.0了。
# 三台虚拟机同步阿里云时间
ntpdate -u ntp.aliyun.com
# 分别在node1,node2,node3的home目录下执行
#生成ssh连接的公私钥
ssh-keygen -t rsa
==========================然后一直回车==============================
# 罗列隐藏文件
ls -al
=========================三台机器均需要执行========================
#将node1的免密公钥拷贝到自身服务器和node2与node3的服务器上,实现node1免密登录自身服务器node2与node3服务器
#将公钥拷贝到node1机器上
ssh-copy-id node1
#将公钥拷贝到node2机器上
ssh-copy-id node2
#将公钥拷贝到node3机器上
ssh-copy-id node3
# 测试结点之间是否可以免密登录
在node1上测试:ssh node2,ssh node3
在node2上测试:ssh node1,ssh node3
在node3上测试:ssh node1,ssh node2
zookeeper-3.4.6.tar.gz
cd /export/server
tar zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6/ zookeeper
#zk默认加载的配置文件是zoo.cfg 因此需要针对模板进行修改。保证名字正确。
cd zookeeper/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
#修改
dataDir=/export/data/zkdata
#文件最后添加 2888心跳端口 3888选举端口
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
#在每台机器的dataDir指定的目录下创建一个文件 名字叫做myid
#myid里面的数字就是该台机器上server编号。server.N N的数字就是编号
[root@node1 conf]# mkdir -p /export/data/zkdata
[root@node1 conf]# echo 1 >/export/data/zkdata/myid
cd /export/server
scp -r zookeeper/ node2:$PWD
scp -r zookeeper/ node3:$PWD
[root@node2 ~]# mkdir -p /export/data/zkdata
[root@node2 ~]# echo 2 > /export/data/zkdata/myid
[root@node3 ~]# mkdir -p /export/data/zkdata
[root@node3 ~]# echo 3 > /export/data/zkdata/myid
# 单个结点启动集群
#在哪个目录执行启动命令 默认启动日志就生成当前路径下 叫做zookeeper.out
/export/server/zookeeper/bin/zkServer.sh start|stop|status
#3台机器启动完毕之后 可以使用status查看角色是否正常。
#还可以使用jps命令查看zk进程是否启动。
[root@node3 ~]# jps
2034 Jps
1980 QuorumPeerMain #看我,我就是zk的java进程
(1)一键启动
[root@node1 ~]# vim startZk.sh
#!/bin/bash
hosts=(node1 node2 node3)
for host in ${hosts[*]}
do
ssh $host "source /etc/profile;/export/server/zookeeper-3/bin/zkServer.sh start"
done
# 赋予脚本用户执行权限
[root@node1 ~]# chmod u+x startZk.sh
一键启动演示:
(2)一键关闭
[root@node1 ~]# vim stopZk.sh
#!/bin/bash
hosts=(node1 node2 node3)
for host in ${hosts[*]}
do
ssh $host "/export/server/zookeeper-3.4.6/bin/zkServer.sh stop"
Done
# 赋予脚本用户执行权限
[root@node1 ~]# chmod u+x stopZk.sh
一键关闭演示:
hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
cd /export/server
rz hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
tar zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
export JAVA_HOME=/export/server/jdk1.8.0_65
#文件最后添加
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 设置SNN进程运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:9868</value>
</property>
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程序历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- 设置YARN集群主角色运行机器位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<!-- 保存的时间7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
node1
node2
node3
cd /export/server
scp -r hadoop-3.3.0 root@node2:$PWD
scp -r hadoop-3.3.0 root@node3:$PWD
vim /etc/proflie
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
(首次启动)格式化namenode
hdfs namenode -format
cd /export/server/hadoop-3.3.0/sbin
./start-all.sh
cd /export/server/hadoop-3.3.0/sbin
./stop-all.sh
mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
[root@node1 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[root@node1 ~]# rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
[root@node1 ~]# rpm -qa|grep mariadb
[root@node1 ~]#
mkdir /export/software/mysql
#上传mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar 到上述文件夹下 解压
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
#执行安装
yum -y install libaio
[root@node1 mysql]# rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
warning: mysql-community-common-5.7.29-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-5.7.29-1.e################################# [ 25%]
2:mysql-community-libs-5.7.29-1.el7################################# [ 50%]
3:mysql-community-client-5.7.29-1.e################################# [ 75%]
4:mysql-community-server-5.7.29-1.e################ ( 49%)
#初始化
mysqld --initialize
#更改所属组
chown mysql:mysql /var/lib/mysql -R
#启动mysql
systemctl start mysqld.service
#查看生成的临时root密码
cat /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: o+TU+KDOm004
[root@node1 ~]# mysql -u root -p
Enter password: #这里输入在日志中生成的临时密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.29
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
#更新root密码 设置为hadoop
mysql> alter user user() identified by "hadoop";
Query OK, 0 rows affected (0.00 sec)
#授权
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
#mysql的启动和关闭 状态查看 (这几个命令必须记住)
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
#建议设置为开机自启动服务
[root@node1 ~]# systemctl enable mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
#查看是否已经设置自启动成功
[root@node1 ~]# systemctl list-unit-files | grep mysqld
mysqld.service enabled
node1,node2,node3 均按照以上步骤安装mysql软件。
apache-hive-3.1.2-bin.tar.gz
tar zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server
cd /export/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib
vim hive-site.xml
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
mysql-connector-java-5.1.32.jar
cd /export/server/apache-hive-3.1.2-bin/
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表
# node1中进入mysql
mysql -u用户名 -p密码
# 查看mysql的hive3数据库下面有多少张表
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'hive3';
# 退出mysql是`exit;`
# 创建临时文件目录和hive数据表存储目录
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
# 赋予两个目录用户组写的权限
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
# 拷贝node1上的hive安装包到node3上
scp -r /export/server/apache-hive-3.1.2-bin/ node3:/export/server/
# 首先需要启动hadoop集群服务和zookeeper服务
# hive的metastore服务前台启动 关闭ctrl+c
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore
#前台启动开启debug日志
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console
==================后台启动 进程挂起 关闭使用jps+ kill -9==================
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 &
#注意 启动hiveserver2需要一定的时间 不要启动之后立即beeline连接 可能连接不上
/export/server/apache-hive-3.1.2-bin/bin/beeline
beeline> ! connect jdbc:hive2://node1:10000
beeline> root
beeline> 直接回车
# 展示hive中的数据库
show databases;
# 退出beeline客户端
命令:!q
Python3.8.8版本:Anaconda3-2021.05-Linux-x86_64.sh
# 切换到下载目录
cd
bash Anaconda3-2021.05-Linux-x86_64.sh
# 之后一路enter回车即可安装完毕
vim /etc/profile
##增加如下配置
export ANACONDA_HOME=/root/anaconda3/bin
export PATH=$PATH:$ANACONDA_HOME/bin
# 刷新环境变量
source /etc/profile
# 断开xshell重新连接
# 输入python查看Python版本
python
conda install 包名 pip install 包名
conda uninstall 包名 pip uninstall 包名
conda install -U 包名 pip install -U 包名
# 设置国内下载镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
# 环境管理
conda env list
conda create py_env python=3.8.8 #创建python3.8.8环境或3.8以上版本,否则异常
activate py_env #激活环境
deactivate py_env #退出环境
source activate 可以进入conda环境
source deactivate 可以退出conda环境
spark-3.1.2-bin-hadoop3.2.tgz
tar -zxvf spark-3.1.2-bin-hadoop3.2.tgz -C /export/server/
# 目录下所有文件和子目录的所有者(owner)都更改为 root 用户
chown -R root /export/server/spark-3.1.2-bin-hadoop3.2
# 目录下所有文件和子目录的所属群组(group)都更改为 root 组
chgrp -R root /export/server/spark-3.1.2-bin-hadoop3.2
ln -s /export/server/spark-3.1.2-bin-hadoop3.2 /export/server/spark
bin 可执行脚本
conf 配置文件
data 示例程序使用数据
examples 示例程序
jars 依赖 jar 包
python pythonAPI
sbin 集群管理命令
yarn 整合yarn需要的东东
/export/server/spark/sbin/start-all.sh
# 本地模式
/export/server/spark/bin/spark-shell --master local[4]
# standlone模式
/export/server/spark/bin/spark-shell --master spark://node1:7077
# HA模式
/export/server/spark/bin/spark-shell --master spark://node1:7077,node2:7077
# 退出模式
命令:`:q`
# 本地模式
/export/server/spark/bin/pyspark --master local[4]
# standlone模式
/export/server/spark/bin/pyspark --master spark://node1:7077
# HA模式
/export/server/spark/bin/pyspark --master spark://node1:7077,node2:7077
# 退出模式
命令:`exit()`
idealU-2023.2.tar.gz
# 我在local路径下新建了文件夹idea,用来存放解压后的文件(新建文件夹命令mkdir)
tar -zxvf idealU-2023.2.tar.gz -C /usr/local/idea
vim ~/.bashrc
export IDEA_HOME=/usr/local/idea/idea-IU-232.8660.185/
export PATH=${IDEA_HOME}/bin:$PATH
source ~/.bashrc
ieda.sh,启动后安装
使用apache软件(虚拟机安装镜像:CentOS-7-x86_64-Minimal-1908)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。