大数据完全分布式环境集群建立(二)
方针
本文首要讲述大数据干流框架 hadoop、hive、hbase、spark、flink在完全分布式环境下的装置和运用,首要分为三个部分:
- docker集群建立
- hadoop、hive、hbase、spark、flink装置装备
- hadoop、hive、hbase、spark、flink的基础运用,包含hadoop数据传输、hive sql操作、spark sql操作、自定义spark算子、flink sql、自定义flink算子、spark机器学习、hbase数据导入、hive数据导入相关操作
因而,本文分为三篇内容,其他两篇详见
大数据环境建立(一)
大数据环境建立(三)
组件版本
jdk 1.8
hadoop 3.2.4
hive 3.1.3
hbase 2.4.14
spark 3.2.2
flink 1.14.5
节点
描述 | 进程 | master | work-1 | work-2 |
---|---|---|---|---|
hadoop元数据 | NameNode | √ | ||
hadoop辅佐元数据 | SecondaryNameNode | √ | ||
hadoop数据 | DataNode | √ | √ | √ |
yarn资源调度 | ResoueceManager | √ | ||
yarn任务 | NodeManager | √ | √ | √ |
hive服务 | hiveserver2 | √ | ||
zookeeper服务 | zookeeper | √ | √ | √ |
hbase主节点 | HMaster | √ | ||
hbase作业节点 | HRegionServer | √ | √ | √ |
spark主节点 | Master | √ | ||
spark作业节点 | Worker | √ | √ | √ |
flink主节点 | StandaloneSessionClusterEntrypoint | √ | ||
flink作业节点 | TaskManagerRunner | √ | √ | √ |
前言
1. docker 容器衔接
衔接工具
本文推荐运用vs code衔接docker容器,需求先装置Remote – Containers插件。装置完成后,翻开vs code的docker面板,界面如下: 衔接到master节点,界面如下:
此界面首要分为3个部分:
- 文件办理
- 代码修正
- 终端
2. 数据保存方位
大数据组件、日志保存方位
大数据组件保存在同享文件夹下,便于我们方便的修正装备文件,以及检查相关日志文件。只需求在本机完成装备,在master、work-1、work-2节点均可见。
日志目录也在同享文件夹下。
hadoop文件保存方位
为了进步集群的速度,hdfs文件保存在各个容器中,本文设置的目录为:
/home/hadoop/data
3. 声明
本文并没有装备集群的高可用,这是因为电脑功能有限,需求在电脑上一起装置hadoop、hive、hbase、spark、flink,假如hadoop、hbase、spark、flink均装备高可用的话,电脑功能不行,相关高可用的装备可以参阅文末的参阅文献。
hadoop 3.2 环境装置
-
修正 etc/hadoop/hadoop-env.sh
export JAVA_HOME=/home/hadoop/big-data-tools/jdk1.8.0_341
-
修正etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/data</value> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> </configuration>
-
修正etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
-
修正etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value> </property> </configuration>
-
修正etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value> </property> </configuration>
-
修正etc/hadoop/workers
master work-1 work-2
-
格式化NameNode
hdfs namenode -format
-
hadoop发动相关指令
start-dfs.sh start-yarn.sh stop-dfs.sh stop-yarn.sh
-
检查hadoop进程
jps
hive 3 环境装置
装置hive需求mysql存储hive的元数据,因而先装置mysql,再装备hive,最终发动hive服务
-
MySQL装置
装置mysql
sudo apt install mysql-server
答应mysql长途拜访
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
修正装备文件中的绑定ip
bind-address = 0.0.0.0
发动mysql,并登录
sudo /etc/init.d/mysql start sudo mysql -u root
新建长途拜访的用户
create user chuan@'%' identified by '123456'; grant all privileges on *.* to chuan@'%' with grant option; FLUSH PRIVILEGES;
2. 装备hive
修正hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>chuan</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
在mysql中创建hive数据库
create database hive
下载mysql驱动包,放到 hive-3.1.3/lib 目录下
初始化metastore
schematool -dbType mysql -initSchema
因为hadoop和hive的guava版本不兼容,因而替换guava,此处可以直接在文件夹中操作,这里是为了方便演示
cp hadoop-3.2.4/share/hadoop/common/lib/guava-27.0-jre.jar hive-3.1.3/lib
rm hive-3.1.3/lib/guava-19.0.jar
-
hive 的发动和封闭
nohup hive --service metastore & nohup hive --service hiveserver2 & kill -9 $(jps -lm | grep -i 'metastore.HiveMetaStore' | awk '{print $1}') kill -9 $(jps -lm | grep -i 'HiveServer2' | awk '{print $1}')
-
衔接测试
beeline -u jdbc:hive2://master:10000 -n hadoop
hbase 2.4 装置
-
修正 hbase-env.sh
export JAVA_HOME=/home/hadoop/big-data-tools/jdk1.8.0_341 export HADOOP_HOME=/home/hadoop/big-data-tools/hadoop-3.2.4 export HBASE_MANAGES_ZK=false
-
修正 hbase-site.xml
<property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master,work-1,work-2</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoop/data/zookeeper</value> </property> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> <property> <name>hbase.tmp.dir</name> <value>/home/hadoop/data/hbase</value> </property>
-
修正regionservers
master work-1 work-2
-
装置zookeeper
修正装备文件
cp conf/zoo_sample.cfg conf/zoo.cfg
dataDir=/home/hadoop/data/zookeeper server.1=master:2888:3888 server.2=work-1:2888:3888 server.3=work-2:2888:3888
在数据文件夹下创建myid
mkdir -p /home/hadoop/data/zookeeper/ vi /home/hadoop/data/zookeeper/myid
在myid中增加与server对应的编号:master 为1, work-1 为2, work-2 为3
警告
myid的值肯定不能错,有必要一一对应
发动zookeeper
zkServer.sh start
-
发动、封闭hbase、进入hbase
start-hbase.sh
stop-hbase.sh
hbase shell
create 'test','c1','c2'
spark 3.2 装置
修正spark-env.sh
export JAVA_HOME=/home/hadoop/big-data-tools/jdk1.8.0_341
export HADOOP_CONF_DIR=/home/hadoop/big-data-tools/hadoop-3.2.4/etc/hadoop
export YARN_CONF_DIR=/home/hadoop/big-data-tools/hadoop-3.2.4/etc/hadoop
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=4g
export SPARK_MASTER_WEBUI_PORT=8090
修正workers
master
work-1
work-2
衔接web检查spark 服务
flink 1.14 装置
修正 workers
master
work-1
work-2
修正masters
master:8070
修正 flink-conf.yaml
rest.port: 8070
jobmanager.rpc.address: master
运行界面
每个节点的运行成果
hadoop 、hbase 、spark、flink网络监控界面
这一部分很重要,尤其是spark和flink, 后面会介绍一些spark网络监控二次开发的相关教程
hadoop NameNode http://master:9870/
hadoop ResourceManager http://master:8088/
hbase http://master:16010/
spark http://master:8090/
flink http://master:8070/
参阅文献
- hadoop.apache.org/docs/r3.2.4…
- hbase.apache.org/book.html#s…
- nightlies.apache.org/flink/flink…
- spark.apache.org/docs/latest…
- cwiki.apache.org/confluence/…
- zeppelin.apache.org/docs/0.10.1…
- zeppelin.apache.org/docs/0.10.1…
- zeppelin.apache.org/docs/0.10.1…
- zeppelin.apache.org/docs/0.10.1…
- www.jianshu.com/p/f45085e04…
- www.codeleading.com/article/354…
- zhuanlan.zhihu.com/p/59805371
- developer.aliyun.com/article/625…
- blog.csdn.net/zheng911209…