大数据搭建

安装配置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文件

修改hbase-site.xml文件

修改regionservers文件

启动HBase

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查看一下

停止(成功没报错)

分发hbase

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

在redis目录下编译安装

[root@master redis]# make MALLOC=libc

启动redis

退出

安装配置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

状态

更改端口号

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐