大数据平台搭建
大数据搭建
安装配置CentOS7

可以选择自动分区
设置网络和主机名

设置root密码:123456

安装完点重启
登录后
修改IP和网卡
vi /etc/sysconfig/network-scripts/ifcfg-ens33

重启网络
systemctl restart network

配置yum源
vi进入CentOS-Base.repo文件
cd /etc/yum.repos.d/
vi CentOS-Base.repo

用yum安装wget
yum -y install wget

下载CentOS 7的repo文件
cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/repo/Centos-7.repo

备份原来的repo文件,替换原来的CentOS-Base.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
mv Centos-7.repo CentOS-Base.repo

yum clean all(清除缓存)

yum makecache(生成缓存)

yum update(更新)

下载lrzsz
yum install lrzsz

下载yum-utils
yum install yum-utils

rz上传压缩包
cd /opt/
mkdir software
mkdir module

rz(上传到software目录下)

四、配置jdk
解压到module
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
改名
mv jdk1.8.0_144 1.8.0

修改环境变量vim /etc/profile

source /etc/profile

安装配置docker
Doker默认官方地址(yum-config-manager需要下载yum-utils)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum包索引
yum makecache fase

关闭防火墙
systemctl stop firewalld

永久关闭防火墙
systemctl disable firewalld

安装docker
yum install docker-ce

启动docker
docker -v

关闭selinux防火墙
setenforce 0

设置永久关闭
vim /etc/selinux/config

拉取镜像
docker pull centos:centos7

创建子网
docker network create --subnet=192.168.1.0/24 hadoopnet

创建centos-docker 文件夹,写dockerfile
mkdir centos-docker
![]()

bulid一下
docker build -t centos:centos7 .

创建容器master,slave1,slave2
docker run -itd --name master --net hadoopnet --ip 192.168.1.2 --privileged=true --hostname master -p 8022:22 centos:centos7 /usr/sbin/init

docker run -itd --name slave1 --net hadoopnet --ip 192.168.1.3 --privileged=true --hostname slave1 centos:centos7 /usr/sbin/init

docker run -itd --name slave2 --net hadoopnet --ip 192.168.1.4 --privileged=true --hostname slave2 centos:centos7 /usr/sbin/init

配置hosts

在三个节点创建密钥
ssh-keygen

ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2()
(三台都要做,并且输入的密码要和Dockerfile里面的一致)
在master 里/opt目录下创建software和module
mkdir software
mkdir module
安装配置Hadoop
把jdk和hadoop的压缩包拷贝到容器中
docker cp jdk-8u144-linux-x64.tar.gz master:/opt/software/
docker cp hadoop-3.1.3.tar.gz master:/opt/software/
![]()

解压
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

配置jdk和hadoop的环境变量
vi /etc/profile

source /etc/profile

cd /opt/module/hadoop-3.1.3/etc/hadoop
vim hadoop-env.sh

vim core-site.xml

vim hdfs-site.xml

vim yarn-site.xml

vim mapred-site.xml

修改workers
vim workers

修改mapred-env.sh

配置start/stop-dfs.sh和start/stop-yarn.sh
start/stop-dfs.sh

start/stop-yarn.sh

同步时间
yum install ntp ntpdate -y(三台节点都做)
scp 分发
scp -r hadoop-3.1.3 slave1:/opt/module
scp -r hadoop-3.1.3 slave2:/opt/module
source 一下
格式化hadoop(在master里)
hadoop namenode -format


群起hadoop
start-all.sh


尝试用hadoop计算pi
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 10


查看镜像
docker images

查看容器
docker ps -a

把容器生成镜像,
docker commit master master
docker commit slave1 slave1
docker commit slave2 slave2

(删除原来的容器,使用新生成的镜像创建容器)删除前需要停止正在进行的容器

删除容器

再次创建容器

安装配置ZooKeeper
把zookeeper的传到docker容器里

解压到module目录下
改名

在zookeeper里创建zkData

在zkData目录下创建myid,文件里写1(不要有空格)

分发zookeeper-3.5.5
scp -r zookeeper-3.5.5 slave1:/opt/module/
scp -r zookeeper-3.5.5 slave2:/opt/module/
把slave1和slave2里的myid分别改为2和3


进入conf里
改名并打开

修改dataDir路径,配置文件

分发zoo.cfg文件

配置zookeeper的环境变量

分发profile文件,然后分别source一下

三台节点启动zookeeper



查看zookeeper的状态



安装配置MySQL
yum 安装libaio
yum install libaio-devel.x86_64 -y
yum install numactl.x86_64 -y
docker cp 传到容器的/optsoftware

解压mysql的tar包到module

改名

添加组和用户

修改目录权限
chown -R mysql:mysql /opt/module/mysql-5.7/

配置mysql服务
cp /opt/module/mysql5.7/support-files/mysql.server /etc/init.d/mysql

修改mysql配置文件
vim /etc/init.d/mysql

修改配置文件my.cnf(my.cnf是新文件)

初始化mysql
/opt/module/mysql-5.7/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/opt/module/mysql-5.7 --datadir=/opt/module/mysql-5.7/data

(执行该命令后会生成一个临时密码,后面登陆会用到)
启动mysql服务

启动mysql

修改密码
set password=password('0815');

开启远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '0815';
flush privileges;


配置mysql环境变量,再source一下

安装配置hive
docker cp到master里再解压

改名

配置环境变量
source一下(如出现以下报错可能是因为你配置文件有空格)


hive-env.sh.template 改为 hive-env.sh
hive-default.xml.template 改为hive-site.xml

配置hive-env.sh

配置hive-site.xml
在编辑器里可以使用(/javax.xxxx)搜索进行修改内容














(检查guava版本选择hadoop的guava版本
查看hive-site.xml里面出现描述中有#8的非法字符情况,查看</value>格式是否正确)

rz 上传mysql-connector-bin.jar
docker cp 到master的hive的lib目录下

hive初始化
schematool -dbType mysql -initSchema –verbose

安装配置spark
rz spark
docker cp 到master节点上

解压到module下

改名

配置环境变量

分发source
进入conf文件夹,修改spark-env.sh.template文件名字

修改spark-env.sh文件

修改workers


修改spark的ui端口号,在sbin的start-master.sh

分发spark
scp -r spark slave1:/opt/module
在spark/sbin目录下执行命令启动spark

提交应用程序
spark-submit --master yarn --class org.apache.spark.examples.SparkPi /opt/module/spark/examples/jars/spark-examples_2.12-3.1.1.jar

jps查看



安装配置flume
rz
docker cp 到容器里

解压到module目录下
![]()
改名

配置环境变量

配置文件


安装配置kafka
rz
docker cp 到master

tar -zxvf 到module

改名

修改配置文件server-properties
bocker.id(另两个节点都需要换)



开启zookeeper(如果已开启就不需要)
配置环境变量

分发Kafka
分别在slave1和slave2里修改server-properties


broker.id不能重复
启动Kafka

![]()

jps一下



创建topic 名字为tests

查询服务器中的所有topic

启动生产者(master里)

启动消费者(在其他两台都起或起一台)


尝试发送消息
slave2收到了消息,slave1没有
安装配置Flink on Yarn
docker cp 到master

解压到module
配置环境变量

修改conf文件





修改masters


修改workers


在config.sh里添加内容(flink的bin目录下)


分发flink


flink run -m yarn-cluster -p 2 -yjm 2G -ytm 2G /opt/module/flink-1.14.0/examples/batch/WordCount.jar
出现这个报错

在flink-conf.yaml里添加这个

然后重新flink run

启动flink

jps一下



安装配置HBase
rz上传

docker cp 到容器里
docker cp hbase-2.2.3-bin.tar.gz master:/opt/software/

tar -zxvf hbase-2.2.3-bin.tar.gz -C /opt/module/

vim /etc/profile

source一下
修改配置文件
进入conf目录
修改hbase-env.sh文件




start-hbase.sh

停止HBase时报错
报错现象:HBase 的 pid 文件默认存放路径为 /tmp 路径,因为可能被操作系统删除,系统找不到 HBase 的进程号
[root@master conf]# stop-hbase.sh
no hbase master found
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hbase-2.2.3/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

解决方案:
修改hbase-env.sh文件
export HBASE_PID_DIR=/opt/module/hbase-2.2.3/pids

再次启动HBase
start-hbase.sh

jps查看一下

停止(成功没报错)

scp -r hbase-2.2.3/ slave1:/opt/module/
scp -r hbase-2.2.3/ slave2:/opt/module/
再次启动

安装配置Redis
rz上传压缩包

docker cp 到容器
docker cp redis-6.2.6.tar.gz master:/opt/software/

tar解压
tar -zxvf redis-6.2.6.tar.gz -C /opt/module/
mv改名

yum安装gcc依赖和make
yum install gcc -y


yum install gcc automake autoconf libtool make


[root@master redis]# make MALLOC=libc



退出

安装配置Hudi
rz上传(hudi、maven)
docker cp 到容器中
docker cp hudi-0.12.0.src.tgz master:/opt/software/
docker cp apache-maven-3.6.3-bin.tar.gz master:/opt/software/


tar解压
tar -zxvf hudi-0.12.0.src.tgz -C /opt/module/
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/module/


改名
mv apache-maven-3.6.3 maven-3.6.3

配置环境变量
vim /etc/profile

source一下
修改配置文件(进入maven目录)
/conf/settings.xml

修改hudi目录下的pom.xml文件


修改兼容性(在大概110行baos加参数值null)
vim hudi-common/src/main/java/org/apache/hudi/common/table/log/block/HoodieParquetDataBlock.java
![]()

解决依赖冲突,修改packaging/hudi-spark-bundle/pom.xml文件

#<hive-service>

#<hive-jdbc>

#<hive-metastore>

#<hive-common>

增加hudi版本的jetty #<jetty>

修改packaging/hudi-utilities-bundle/pom.xml文件
#<hudi-common>

#<hudi-client-common>

#<hive-service>

#<hive-jdbc>

#<hive-metastore>

#<hive-common>

#<htrace-core>

编译hudi(此过程不要动虚拟机)
mvn clean package -DskipTests -Dspark3.1 -Dscala2.12 -Dhadoop.version=3.1.3 -Pflink-bundle-shade-hive3

复制hudi-spark3.1-bundle_2.12-0.12.0.jar到/opt/software目录下
cp packaging/hudi-spark-bundle/target/hudi-spark3.1-bundle_2.12-0.12.0.jar /opt/software/

启动spark-shell

在spark-shell里操作
scala> import org.apache.hudi.QuickstartUtils._
import org.apache.hudi.QuickstartUtils._
scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._
scala> import org.apache.spark.sql.SaveMode._
import org.apache.spark.sql.SaveMode._
scala> import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceReadOptions._
scala> import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.DataSourceWriteOptions._
scala> import org.apache.hudi.config.HoodieWriteConfig._
import org.apache.hudi.config.HoodieWriteConfig._
scala> import org.apache.hudi.common.model.HoodieRecord
import org.apache.hudi.common.model.HoodieRecord

scala> val tableName = "hudi_trips_cow"
tableName: String = hudi_trips_cow

scala> val basePath = "file:///tmp/hudi_trips_cow"
basePath: String = file:///tmp/hudi_trips_cow

scala> val dataGen = new DataGenerator
dataGen: org.apache.hudi.QuickstartUtils.DataGenerator = org.apache.hudi.QuickstartUtils$DataGenerator@6a75ba58

scala> val inserts = convertToStringList(dataGen.generateInserts(10))
inserts: java.util.List[String] = [{"ts": 1701888150694, "uuid": "3c07b386-5012-49b9-a93a-1298f67d0b59", "rider": "rider-563", "driver": "driver-563", "begin_lat": 0.16172715555352513, "begin_lon": 0.6286940931025506, "end_lat": 0.7559063825441225, "end_lon": 0.39828516291900906, "fare": 16.098476392187365, "partitionpath": "asia/india/chennai"}, {"ts": 1701946294940, "uuid": "ebd11b45-1382-42cf-a876-5e2cd248232a", "rider": "rider-563", "driver": "driver-563", "begin_lat": 0.9312237784651692, "begin_lon": 0.67243450582925, "end_lat": 0.28393433672984614, "end_lon": 0.2725166210142148, "fare": 27.603571822228822, "partitionpath": "americas/brazil/sao_paulo"}, {"ts": 1702178292687, "uuid": "742e492d-8e5e-47af-9fac-ef74a366ee48", "rider": "rider-563", "driver": "d...

scala> val df = spark.read.json(spark.sparkContext.parallelize(inserts,2))
warning: there was one deprecation warning (since 2.12.0)
warning: there was one deprecation warning (since 2.2.0)
warning: there were two deprecation warnings in total; for details, enable `:setting -deprecation' or `:replay -deprecation'
df: org.apache.spark.sql.DataFrame = [begin_lat: double, begin_lon: double ... 8 more fields]

scala> df.write.format("hudi").
| options(getQuickstartWriteConfigs).
| option(PRECOMBINE_FIELD_OPT_KEY, "ts").
| option(RECORDKEY_FIELD_OPT_KEY, "uuid").
| option(PARTITIONPATH_FIELD_OPT_KEY,"partitionpath").
| option(TABLE_NAME, tableName).
| mode(Overwrite).
| save(basePath)
warning: there was one deprecation warning; for details, enable `:setting -deprecation' or `:replay -deprecation'
2023-12-13 17:07:50,978 WARN metadata.HoodieBackedTableMetadata: Metadata table was not found at path file:///tmp/hudi_trips_cow/.hoodie/metadata

scala> val tripsSnapshotDF = spark.read.format("hudi").load(basePath +"/*/*/*/*")
tripsSnapshotDF: org.apache.spark.sql.DataFrame = [_hoodie_commit_time: string, _hoodie_commit_seqno: string ... 13 more fields]

scala> tripsSnapshotDF.createOrReplaceTempView("hudi_trips_snapshot")

scala> spark.sql("select fare,begin_lon,begin_lat,ts from hudi_trips_snapshot where fare > 20.0").show()

Hudi启动测试


安装配置ClickHouse
rz上传四个压缩包


docker cp到容器
docker cp clickhouse-client-21.9.6.24.tgz master:/opt/software/

docker cp clickhouse-common-static-21.9.6.24.tgz master:/opt/software/

docker cp clickhouse-common-static-dbg-21.9.6.24.tgz master:/opt/software/

docker cp clickhouse-server-21.9.6.24.tgz master:/opt/software/

依次将这四个安装包解压,并且每解压一个,执行一下解压文件下的install/doinst.sh
解压顺序如下:
tar -zxvf /opt/software/clickhouse-common-static-21.9.6.24.tgz -C /opt/module/

clickhouse-common-static-21.9.6.24/install/doinst.sh

tar -zxvf /opt/software/clickhouse-common-static-dbg-21.9.6.24.tgz -C /opt/module/

clickhouse-common-static-dbg-21.9.6.24/install/doinst.sh

安装clickhouse服务器
tar -zxvf /opt/software/clickhouse-server-21.9.6.24.tgz -C /opt/module/

clickhouse-server-21.9.6.24/install/doinst.sh


/etc/init.d/clickhouse-server start

查看状态

tar -zxvf /opt/software/clickhouse-client-21.9.6.24.tgz -C /opt/module/

clickhouse-client-21.9.6.24/install/doinst.sh

修改配置文件
/etc/clickhouse-server/config.xml


重启clickhouse服务以使更改生效
/etc/init.d/clickhouse-server restart

状态

更改端口号


更多推荐
所有评论(0)