赞
踩
1.解压文件
1.1可以写一个分发脚本xsync.sh方便分发配置文件和项目框架
1.2配置SSH免密,方便文件的传输
2.在/etc/profile.d/my_env.sh 文件中编写环境变量(如果没有,就创建)
3.使环境变量生效source /etc/profile
1.解压Hadoop压缩包到/opt/module目录下
2.配置环境变量,分发环境变量
3.编写配置文件hdfs-site.xml,core-site.xml,yarn-site.xml,mapred-site.xml,workers
4.分发hadoop到每个节点上
5.初始化hadoop bin/hdfs namenode -format 如果可以打开网页端,那就说明正常启动
6.hadoop群起脚本的编写 myhadoop.sh
1.使用命令卸载系统自带的mysql “rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps” 2.分模块安装mysql sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm 3.启动mysql sudo systemctl start mysqld 4.查看mysql密码 sudo cat /var/log/mysqld.log | grep password 5.登录进入mysql 6.更改密码进行密码安全性操作 set password=password("Qs23=zs32"); 7.修改密码策略 set global validate_password_length=4; set global validate_password_policy=0; 8.设置简单密码 set password=password("root"); 9.更改用户权限,方便外部工具连接 use mysql update user set host="%" where user="root"; flush privileges;
Zookeeper一般安装单数台机器,常用即3台或5台
1.解压Zookeeper
2.在Zookeeper中创建目录zkData
3.创建文件myid打上对应的服务编号,2
4.分发zookeeper,修改对应节点上的服务编号
5.将zoo_sample.cfg文件修改为zoo.cfg文件,并配置两个参数
dataDir=/opt/module/zookeeper-3.5.7/zkData
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
6.分发配置文件
7.编写群起zookeeper脚本
kafka的运行在2.4.1之前的版本都依赖于zookeeper,所以我们要先安装好zookeeper后,再进行kafka的安装,并且zk和kafka需要安装在相同节点上 1.解压kafka安装包 2.修改配置文件 vim /kafka/config/server.properties 修改或者增加以下内容: #broker的全局唯一编号,不能重复 broker.id=0 #kafka运行日志存放的路径 log.dirs=/opt/module/kafka/data #配置连接Zookeeper集群地址 zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka 3.配置环境变量,并source #KAFKA_HOME export KAFKA_HOME=/opt/module/kafka export PATH=$PATH:$KAFKA_HOME/bin 4.分发kafka,并且在不同节点上修改相应的broker.id 5.编写启停脚本 6.可以选择安装kafka的监控工具eagle
1.解压flume
2.lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3
3.修改conf目录下的log4j.properties配置文件,配置日志文件路径
flume.log.dir=/opt/module/flume/logs
4.分发flume
下载解压即可使用
注意!!maxwell 1.30及以上版本不支持jdk1.8.0; 1.解压MaxWell 2.配置mysql Binlog日志 修改配置文件 sudo vim /etc/my.cnf [mysqld] #数据库id server-id = 1 #启动binlog,该参数的值会作为binlog的文件名 log-bin=mysql-bin #binlog类型,maxwell要求为row类型 binlog_format=row #启用binlog的数据库,需根据实际情况作出修改 binlog-do-db=gmall 3.重启sql服务 sudo systemctl restart mysqld 4.创建maxwell所需要的数据库及用户和权限分配 创建数据库 CREATE DATABASE maxwell; 调整MySQL数据库密码级别 set global validate_password_policy=0; set global validate_password_length=4; 创建Maxwell用户并赋予其必要权限 CREATE USER 'maxwell'@'%' IDENTIFIED BY 'maxwell'; GRANT ALL ON maxwell.* TO 'maxwell'@'%'; GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%'; 5.配置maxwell的配置文件config.properties.example改名为config.properties #Maxwell数据发送目的地,可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis producer=kafka #目标Kafka集群地址 kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092 #目标Kafka topic,可静态配置,例如:maxwell,也可动态配置,例如:%{database}_%{table} kafka_topic=maxwell #MySQL相关配置 host=hadoop102 user=maxwell password=maxwell jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai
1.解压hive 2.配置环境变量 #HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin 3.解决日志jar包冲突 mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak 4.将hive的元数据配置到mysql中 4.1拷贝jdbc的驱动到hive的lib目录下 4.2新建hive-site.xml文件并配置,配置看下文 5.在mysql中新建hive的元数据库并初始化 create database metastore;(在sql中) bin/schematool -initSchema -dbType mysql -verbose(在hive目录中命令行中) 6.修改元数据字符集 use metastore; alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8; alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8; 7.使用jdbc的方式连接数据库,可以通过脚本hiveservers.sh 和jdbc.sh
Hbase必须依赖于zookeeper和Hadoop
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH= P A T H : PATH: PATH:HBASE_HOME/bin
修改hbase-env.sh中的 export HBASE_MANAGES_ZK=false
修改hbase-site.xml的内容
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://hadoop102:8020/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop102,hadoop103,hadoop104</value> </property> </configuration>
修改regionservers里面输入对应的服务器节点
bin/start-hbase.sh
bin/stop-hbase.sh
启动成功后可以通过http://主机名:16010来访问Hbase管理页面
bin/hbase shell
上传并解压jar包
复制server包并拷贝到各个节点的hbase/lib
cp /opt/module/phoenix/phoenix-5.0.0-HBase-2.0-server.jar /opt/module/hbase/lib/
xsync /opt/module/hbase/lib/phoenix-5.0.0-HBase-2.0-server.jar
配置环境变量
#phoenix
export PHOENIX_HOME=/opt/module/phoenix
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH= P A T H : PATH: PATH:PHOENIX_HOME/bin
重启HBase
连接Phoenix
/opt/module/phoenix/bin/sqlline.py hadoop102,hadoop103,hadoop104:2181
解压scala安装包,配置环境变量,在cmd中输入scala,跳出版本号,即为安装成功
10.2.1 创建正常的maven项目,点击File => Setting => plugins 选择网络安装可以使用Markerplace,但是网络不稳定,也可以下载好对应idea版本的scala环境安装包后在设置中进行加载。
10.2.2 设置完成后,右键项目名,选择add FrameWorkers Support进行Scala加载,第一次配置时,需要手动选择Scala安装路径
10.2.3 右键点击main目录->New->点击Diretory -> 写个名字(比如scala)。
右键点击scala目录->Mark Directory as->选择Sources root,观察文件夹颜色变成蓝色
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
需要启动Hadoop集群,确认存放的directory目录存在
hadoop fs -mkdir /directory
修改spark.env.sh文件
vim spark-env.sh
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
配置高可用前一定要停止集群
#注释掉如下内容:
#SPARK_MASTER_HOST=hadoop102
#SPARK_MASTER_PORT=7077
#添加上如下内容。配置由Zookeeper管理Master,在Zookeeper节点中自动创建/spark目录,用于管理:
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop102,hadoop103,hadoop104
-Dspark.deploy.zookeeper.dir=/spark"
#添加如下代码
#Zookeeper3.5的AdminServer默认端口是8080,和Spark的WebUI冲突
export SPARK_MASTER_WEBUI_PORT=8989
注:一旦配置了高可用以后,master后面要连接多个master
bin/spark-shell \
--master spark://hadoop102:7077,hadoop103:7077 \
--executor-memory 2g \
--total-executor-cores 2
注意:如果遇到 “JAVA_HOME not set” 异常,可以在sbin目录下的spark-config.sh 文件中加入如下配置:
export JAVA_HOME=java家目录
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
记得分发
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
spark-default.conf文件
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
查看历史日志配置
spark.yarn.historyServer.address=hadoop102:18080
spark.history.ui.port=18080
spark-env.sh文件
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
ClassNotFoundException:com.sun.jersey.api.client.config.ClientConfig
-原因分析:Spark2中jersey版本是2.22,但是yarn中还需要依赖1.9,版本不兼容
-解决方式:在yarn-site.xml中,添加
<property>
<name>yarn.timeline-service.enabled</name>
<value>false</value>
</property>
Spark客户端直接连接Mesos;不需要额外构建Spark集群。国内应用比较少,更多的是运用Yarn调度
注意:官网下载的Hive3.1.2和Spark3.0.0默认是不兼容的。因为Hive3.1.2支持的Spark版本是2.4.5,所以需要我们重新编译Hive3.1.2版本。
编译步骤:官网下载Hive3.1.2源码,修改pom文件中引用的Spark版本为3.0.0,如果编译通过,直接打包获取jar包。如果报错,就根据提示,修改相关方法,直到不报错,打包获取jar包。
http://spark.apache.org/downloads.html
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/
mv /opt/module/spark-3.0.0-bin-hadoop3.2 /opt/module/spark
# SPARK_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
记得source
vim /opt/module/hive/conf/spark-defaults.conf
添加如下内容
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/spark-history
spark.executor.memory 1g
spark.driver.memory 1g
在hdfs创建如下路径,用户存储历史日志(和上述spark.eventLog.dir参数内容一致)
hadoop fs -mkdir /spark-history
说明1:由于Spark3.0.0非纯净版默认支持的是hive2.3.7版本,直接使用会和安装的Hive3.1.2出现兼容性问题。所以采用Spark纯净版jar包,不包含hadoop和hive相关依赖,避免冲突。
说明2:Hive任务最终由Spark来执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将Spark的依赖上传到HDFS集群路径,这样集群中任何一个节点都能获取到。
上传并解压spark-3.0.0-bin-without-hadoop.tgz
tar -zxvf /opt/software/spark-3.0.0-bin-without-hadoop.tgz
上传jar包至HDFS上
hadoop fs -mkdir /spark-jars
hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars
修改hive-site.xml配置文件
<!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->
<property>
<name>spark.yarn.jars</name>
<value>hdfs://hadoop102:8020/spark-jars/*</value>
</property>
<!--Hive执行引擎-->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
启动hive,执行sql出现spark-job即为成功
系统资源不足时适当调整
在hadoop102的/opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml文件中修改如下参数值
集群模式下,可配置多个Master及多个Worker。通常可配置2~3个Master,若干个Worker。
1)每台节点均需部署JDK(1.8+),并配置相关环境变量。
2)需部署数据库,支持MySQL(5.7+)或者PostgreSQL(8.2.15+)。
3)需部署Zookeeper(3.4.6+)。
4)每台节点均需安装进程管理工具包psmisc。
sudo yum install -y psmisc
1)上传DolphinScheduler安装包到hadoop102节点的/opt/software目录
2)解压安装包到当前目录
注:解压目录并非最终的安装目录
--创建数据库
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
--创建用户
CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';
--赋予权限
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';
flush privileges;
进入DS解压目录,修改conf目录下的datasource.properties文件
vim /opt/software/apache-dolphinscheduler-1.3.9-bin/conf/datasource.properties
--修改内容如下
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://主机名:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=dolphinscheduler
spring.datasource.password=dolphinscheduler
cp /opt/software/mysql-connector-java-5.1.27-bin.jar lib/
数据库初始化脚本位于DolphinScheduler解压目录下的script目录中,即/opt/software /apache-dolphinscheduler-1.3.9-bin/script/。
script/create-dolphinscheduler.sh
修改解压目录下的conf/config目录下的install_config.conf文件
修改内容如下:
# postgresql or mysql dbtype="mysql" # db config # db address and port dbhost="hadoop102:3306" # db username username="dolphinscheduler" # database name dbname="dolphinscheduler" # db passwprd # NOTICE: if there are special characters, please use the \ to escape, for example, `[` escape to `\[` password="dolphinscheduler" # zk cluster zkQuorum="hadoop102:2181,hadoop103:2181,hadoop104:2181" # Note: the target installation path for dolphinscheduler, please not config as the same as the current path (pwd) installPath="/opt/module/dolphinscheduler" # deployment user # Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself deployUser="atguigu" # resource storage type: HDFS, S3, NONE resourceStorageType="HDFS" # resource store on HDFS/S3 path, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions. "/dolphinscheduler" is recommended resourceUploadPath="/dolphinscheduler" # if resourceStorageType is HDFS,defaultFS write namenode address,HA you need to put core-site.xml and hdfs-site.xml in the conf directory. # if S3,write S3 address,HA,for example :s3a://dolphinscheduler, # Note,s3 be sure to create the root directory /dolphinscheduler defaultFS="hdfs://hadoop102:8020" # resourcemanager port, the default value is 8088 if not specified resourceManagerHttpAddressPort="8088" # if resourcemanager HA is enabled, please set the HA IPs; if resourcemanager is single, keep this value empty yarnHaIps= # if resourcemanager HA is enabled or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname singleYarnIp="hadoop103" # who have permissions to create directory under HDFS/S3 root path # Note: if kerberos is enabled, please config hdfsRootUser= hdfsRootUser="atguigu" # api server port apiServerPort="12345" # install hosts # Note: install the scheduled hostname list. If it is pseudo-distributed, just write a pseudo-distributed hostname ips="hadoop102,hadoop103,hadoop104" # ssh port, default 22 # Note: if ssh port is not default, modify here sshPort="22" # run master machine # Note: list of hosts hostname for deploying master masters="hadoop102" # run worker machine # note: need to write the worker group name of each worker, the default value is "default" workers="hadoop102:default,hadoop103:default,hadoop104:default" # run alert machine # note: list of machine hostnames for deploying alert server alertServer="hadoop102" # run api machine # note: list of machine hostnames for deploying api server apiServers="hadoop102"
Superset是由Python语言编写的Web应用,要求Python3.7的环境。
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同Python版本的软件包及其依赖,并能够在不同的Python环境之间切换,Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等,Miniconda包括Conda、Python。
1)安装Miniconda
(1)执行以下命令进行安装,并按照提示操作,直到安装完成。
[atguigu@hadoop102 lib]$ bash Miniconda3-latest-Linux-x86_64.sh
(2)加载环境变量配置文件,使其生效
source ~/.bashrc
2)取消激活base环境
Miniconda安装完成后,每次打开终端都会激活其默认的base环境,我们可通过以下命令,禁止激活默认base环境。
[atguigu@hadoop102 lib]$ conda config --set auto_activate_base false
2)创建Python3.7环境
(base) [atguigu@hadoop102 ~]$ conda create --name superset python=3.7
说明:conda环境管理常用命令
**创建环境:**conda create -n env_name
**查看所有环境:**conda info --envs
**删除一个环境:**conda remove -n env_name --all
3)激活superset环境
(base) [atguigu@hadoop102 ~]$ conda activate superset
说明:退出当前环境
(superset) [atguigu@hadoop102 ~]$ conda deactivate
4)执行python命令查看python版本
安装Superset之前,需安装以下所需依赖
(superset) [atguigu@hadoop102 ~]$ sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel
1)安装(更新)setuptools和pip
(superset) [atguigu@hadoop102 ~]$ pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/
**说明:**pip是python的包管理工具,可以和centos中的yum类比
2)安装Supetset
(superset) [atguigu@hadoop102 ~]$ pip install apache-superset -i https://pypi.douban.com/simple/
说明:-i的作用是指定镜像,这里选择国内镜像
注:如果遇到网络错误导致不能下载,可尝试更换镜像
(superset) [atguigu@hadoop102 ~]$ pip install apache-superset --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple
3)初始化Supetset数据库
(superset) [atguigu@hadoop102 ~]$ superset db upgrade
4)创建管理员用户
(superset) [atguigu@hadoop102 ~]$ export FLASK_APP=superset
(superset) [atguigu@hadoop102 ~]$ superset fab create-admin
**说明:**flask是一个python web框架,Superset使用的就是flask
5)Superset初始化
(superset) [atguigu@hadoop102 ~]$ superset init
1)安装gunicorn
(superset) [atguigu@hadoop102 ~]$ pip install gunicorn -i https://pypi.douban.com/simple/
**说明:**gunicorn是一个Python Web Server,可以和java中的TomCat类比
2)启动Superset
(1)确保当前conda环境为superset
(2)启动
(superset) [atguigu@hadoop102 ~]$ gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 "superset.app:create_app()" --daemon
3)停止superset
停掉gunicorn进程
(superset) [atguigu@hadoop102 ~]$ ps -ef | awk ‘/superset/ && !/awk/{print $2}’ | xargs kill -9
创建文件
vim superset.sh
脚本内容如下
#!/bin/bash superset_status(){ result=`ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | wc -l` if [[ $result -eq 0 ]]; then return 0 else return 1 fi } superset_start(){ source ~/.bashrc superset_status >/dev/null 2>&1 if [[ $? -eq 0 ]]; then conda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon 'superset.app:create_app()' else echo "superset正在运行" fi } superset_stop(){ superset_status >/dev/null 2>&1 if [[ $? -eq 0 ]]; then echo "superset未在运行" else ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9 fi } case $1 in start ) echo "启动Superset" superset_start ;; stop ) echo "停止Superset" superset_stop ;; restart ) echo "重启Superset" superset_stop superset_start ;; status ) superset_status >/dev/null 2>&1 if [[ $? -eq 0 ]]; then echo "superset未在运行" else echo "superset正在运行" fi esac
(superset) [atguigu@hadoop102 ~]$ conda install mysqlclient
安装完毕后需要重启superset
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。