大数据环境生态搭建
文章目录
大数据环境生态搭建
一、通用操作
1、更改三台节点的主机名
输入命令: hostnamectl set-hostname master
更改master节点的名字
输入命令:hostnamectl set-hostname slave1
更改 slave1 节点的名字
输入命令:hostnamectl set-hostname slave2
更改slave2 节点的名字
2、关闭三台机器 linux 的安全模式
输入命令:vim /etc/sysconfig/selinux
改为 disabled
3、关闭三台机器的防火墙
输入命令:systemctl stop firewalld
关闭防火墙
输入命令:systemctl disable firewalld
防止开机自启
输入命令:systemctl status firewalld
查看防火墙状态
4、设置三台机器的免密的登录
输入命令:ssh-keygen -t rsa
然后连续按三个回车
三条命令都在 master 节点上直接执行
输入命令:ssh-copy-id master
秘钥分发给master节点
输入命令:ssh-copy-id slave1
秘钥分发给slave1节点
输入命令:ssh-copy-id slave2
秘钥分发给slave2节点
5、创建用户组和用户
输入命令:groupadd aex
创建aex用户组
输入命令: useradd -m aex -g aex
创建aex用户属于aex组
要是想给创建的用户添加所有的权限,包括文件系统的
输入命令:sudo visudo
在下面添加 aex ALL=(ALL) ALL 就添加了所有的权限了
二、安装 JDK1.8
在 master 节点 /opt 目录下建一个 /opt/software 目录,用来存放所有的安装包
将 jdk1.8 安装包放进去
在建立一个 module 目录,解压好的包都放这里面
输入命令: tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
输入命令: mv jdk1.8.0_212/ jdk1.8
把名字改为 jdk1.8
接下来配置jdk环境
输入命令:vim /etc/profile
添加下面的配置
export JAVA_HOME=/opt/module/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
输入命令:source /etc/profile
配置好了保存一下配置
输入命令:java -version
可以看到 java 的版本了
输入命令:vim hello.java
创建一个java类
输入命令:javac hello.java
编译java类
输入命令:java hello
运行 java 程序
三、Hadoop 完全分布式
将 hadoop3.1.3 解压到 /opt/module 目录下
输入命令·: tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
然后分发给其他的两个节点
输入命令: scp -r hadoop-3.1.3/ root@slave1:/opt/module/
分发到 slave1 节点
输入命令:scp -r hadoop-3.1.3/ root@slave1:/opt/module/
分发到 slave2 节点
配置环境变量
输入命令:vim /etc/profile
添加下面的配置
export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
可以看到安装成功了
1、配置 core-site.xml
输入命令:cd $HADOOP_HOME/etc/hadoop
进入hadoop的配置目录
输入命令:vim core-site
配置 core-site 文件
添加如下的配置
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>aex</value>
</property>
</configuration>
2、配置 hdfs-site.xml
输入命令:vim hdfs-site.xml
配置hdfs
添加4如下配置
<configuration>
<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
</configuration>
3、配置 yarn-site.xml
输入命令:vim yarn-site.xml
添加如下配置
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
</property>
</configuration>
4、配置 mapred-site.xml
输入命令:mapred-site.xml
添加以下配置
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
输入命令: scp -r $HADOOP_HOME root@slave1:$HADOOP_HOME
hadoop 配置分发给 slave1
输入命令: scp -r $HADOOP_HOME root@slave2$HADOOP_HOME
hadoop 配置分发给 slave2
5、配置 hadoop-env.sh
输入命令:vim hadoop-env.sh
在里面添加 jdk 的路径,不然hdfs找不到jdk
export JAVA_HOME=/opt/module/jdk1.8
然后在 hadoop /sbin 目录下 start-yarn.sh 和 stop-yarn.sh 的第一行 添加下面内容
输入命令:vim /opt/hadoop3.1.3/sbin/start-yarn.sh
输入命令:vim /opt/hadoop3.1.3/sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
6、进行 hadoop 初始化
输入命令:hdfs namenode -format
初始化hadoop
输入命令:start-all.sh
可以看到节点已经启动起来了
-
进入webUI界面
四、scala2.12 版本
先安装 scala 才能安装 spark
scala下载地址:https://www.scala-lang.org/download/all.html
将/opt/software
目录的 scala2.12 的压缩包解压到/opt/module
目录下
输入命令:tar -zxvf scala-2.12.11.tgz -C /opt/module/
输入命令: mv scala-2.12.11/ scala
改个名字,改为scala
输入命令:vim /etc/profile
添加 scala 环境变量
export SCALA_HOME=/opt/module/scala
export PATH=$PATH:$SCALA_HOME/bin
输入命令:scala -version
查看scala 是否安装成功
五、Spark On Yarn
将 spark3.2 的压缩包上传到 /opt/software
目录下
输入命令: tar -zxvf spark-3.2.3-bin-hadoop3.2-scala2.13.tgz -C /opt/module/
解压到 /opt/module
目录下
输入命令:mv spark-3.2.3-bin-hadoop3.2-scala2.13/ spark
改名为spark
输入命令:vim /etc/profile
添加下面的配置
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
输入命令:spark-submit --version
查看是否安装成功
1、配置 yarn-site.xml
输入命令:vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
配置 yarn-site.xml 文件,添加下面内容
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 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>
2、配置 spark-env.sh
输入命令:vim /opt/module/spark/spark-env.sh
添加JAVA_HOME 和 YARN_CONF_DIR
输入命令:spark-env.sh.template spark-env.sh
先改个名,配置文件才能生效
输入命令:vim spark-env.sh
添加以下内容
export JAVA_HOME=/opt/module/jdk1.8
export YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
输入命令: spark-submit \ --class org.example.hive_targer1.hive01_provinceeverymonth \ /opt/jars/job2.jar
提交任务到 spark on yarn
运行结果:
六、Flink On Yarn
将 flink1.13 的压缩包上传到 /opt/software
目录
输入命令:tar -zxvf flink-1.13.0-bin-scala_2.12.tgz -C /opt/module/
解压到 /opt/module 目录
输入命令:mv flink-1.13.0/ flink
我们改个名
输入命令:vim /etc/profile
增加环境变量
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
export FLINK_HOME=/opt/module/flink
export PATH=$PATH:$FLINK_HOME/bin
输入命令:flink version
查看版本
1、配置 flink-conf.yaml
输入命令:vim /opt/module/flink/conf/flink-conf.yaml
添加以下配置,只需要将这个值改为8,其他不变
Per Job(Job 分离模式提交): bin/flink run -d -t yarn-per-job -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar
七、Hive
将 Hive3.13 的压缩包上传到 /opt/software 目录下
输入命令: tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/module/
解压到/opt/module 目录下
输入命令: mv apache-hive-3.1.3-bin/ hive
改名为hive
输入命令:vim /etc/profile
添加下面的配置
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
输入命令:hive --version
1、安装mysql
输入命令:rpm -qa|grep mariadb mariadb-libs-5.5.56-2.el7.x86_64
检查系统是否安装过mysql
将 mysql 5.7 的压缩包上传到 /opt/module/
输入命令:tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C /opt/module/
解压到 /opt/module 目录下
输入命令:yum install -y libaio
安装这个依赖,下面的安装命令依次执行
输入命令: rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令:rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令: rpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令: rpm -ivh mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令: rpm -ivh mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令: rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令:rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令: rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令: rpm -ivh mysql-community-test-5.7.28-1.el7.x86_64.rpm --force --nodeps
输入命令:vim my.cnf
删除datadir的值,如果这个目录下有内容的话,全部删除
可以看到我们没有
输入命令:sudo mysqld --initialize --user=mysql
初始化数据库
输入命令:sudo cat /var/log/mysqld.log
查看临时密码,root@localhost
后面那个
输入命令:sudo systemctl start mysqld
启动mysql服务
输入命令:mysql -uroot -p>&5tqKZA4fFt
这是刚刚那个临时密码
输入命令:set password = password("p@ssw0rd");
密码修改为p@ssw0rd
修改 mysql 库下的 user 表中的 root 用户允许任意 ip 连接
输入命令:update mysql.user set host='%' where user='root';
2、Hive 元数据配置到mysql
将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下
输入命令: cp mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
3、配置 hive-site.xml 文件
在 $HIVE_HOME/conf 目录下 新建 hive-site.xml 文件
输入命令:vim $HIVE_HOME/conf/hive-site.xml
添加下面的内容
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc 连接的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc 连接的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc 连接的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>p@ssw0rd</value>
</property>
<!-- Hive 元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive 默认在 HDFS 的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>
</configuration>
输入命令: hdfs dfs -mkdir -p /user/hive/warehouse
创建hive在hdfs的工作目录
输入命令:mysql -uroot -pp@ssw0rd
进入mysql
输入命令:create database metastore
新建hive元数据库
输入命令:schematool -initSchema -dbType mysql - verbose
输入命令:vim $HIVE_HOME/conf/hive-site.xml
以元数据方式访问hive,添加以下内容
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>
输入命令:nohup /opt/module/hive/bin/hive --service hiveserver2 &
启动hiveserver2 服务
输入命令:hive --service metastoew &
启动hive服务
八、zookeeper
将zookeeper3.5.7 的压缩包上传到 /opt/module 目录下
输入命令: tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
解压到 /opt/module 目录
输入命令:mv apache-zookeeper-3.5.7-bin/ zookeeper
改名为 zookeeper
输入命令: mkdir /opt/module/zookeeper/zkDate
创建一个zkDate 目录
输入命令:vim myid
在zkDate 目录下,新建一个这个文件,里面就添加一个2,这个是与server相对应的编号
输入命令:scp -r zookeeper/ root@slave1:/opt/module/
分发给slave1
输入命令:scp -r zookeeper/ root@slave2:/opt/module/
分发给slave2
输入命令:cd /opt/module/zookeeper/conf
进入这个目录
输入命令: mv zoo_sample.cfg zoo.cfg
给这个文件名改个名字
输入命令:vim zoo.cfg
添加下面的配置
dataDir=/opt/zookeeper/zkDate
server.2=master:2888:3888
server.3=slave1:2888:3888
server.4=slave2:2888:3888
输入命令: scp -r zoo.cfg root@slave1:/opt/module/zookeeper/conf/
分发给slave1
输入命令: scp -r zoo.cfg root@slave1:/opt/module/zookeeper/conf/
分发给slave2
输入命令: bin/zkServer.sh start
三台机器启动 zookeeper
九、kafka
将 kafka2.12 压缩包上传到 /opt/module 目录下
输入命令:tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/
解压到 /opt/module 目录下
输入命令: mv kafka_2.12-3.0.0/ kafka
改名为kafka
输入命令:vim /opt/module/kafka/config/server.properties
修改里面的配置,只更改这两个
log.dirs=/opt/module/kafka/datas
zookeeper.connect=master:2181,slave1:2181,slave2:2181/kafka
输入命令:mkdir datas
kafka 下面创建一个 datas 目录,这回事kafka的日志存放的目录
输入命令: scp -r kafka/ root@slave1:/opt/module/
将kafka分发给slave1
输入命令: scp -r kafka/ root@slave2:/opt/module/
将kafka分发给slave2
分别在 slave1和slave2修改配置文件 vim /opt/module/kafka/config/server.properties 里面的
broker.id=1、broker.id=2
broker.id 不得重复,整个集群中唯一。
所以要修改一下是id唯一的
输入命令:vim /etc/profile
添加 kafka 的环境变量
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
输入命令:scp -r /etc/profile root@slave1:/etc/profile
分发给 slave1
输入命令:scp -r /etc/profile root@slave2:/etc/profile
分发给slave2
输入命令: zkServer.sh start
先在三个节点启动 zookeeper 集群
输入命令:bin/kafka-server-start.sh -daemon config/server.properties
在三个节点依次启动kafka
创建主题:installtopic
输入命令:bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 2 --replication-factor 2 --topic installtopic
输入命令:bin/kafka-topics.sh --bootstrap-server master:9092 --list
查看服务器中所有的主题
十、flume
将 flume1.9.0 压缩包上传到 /opt/module 目录下
输入命令: tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/module/
解压到 /opt/module 目录下
输入命令:mv apache-flume-1.9.0-bin/ flume
改名为flume
输入命令:cd flume/lib/
将 lib 文件夹下的 guava-11.0.2.jar 删除以兼容 Hadoop 3.1.3
输入命令:rm -rf guava-11.0.2.jar
删除这个依赖
输入命令:bin/flume-ng agent -n a1 -c conf/ -f job/file_to_kafka
flume 启动命令
十一、sqoop
将 sqoop1.4.7 的压缩包上传到 /opt/software 目录下
输入命令: tar -zxvf spark-3.2.3-bin-hadoop3.2-scala2.13.tgz -C /opt/module/
解压到 /opt/module 目录
输入命令: mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop
改名为 sqoop
1、配置 sqoop-env.sh
输入命令:cd /opt/module/sqoop/conf
进入这个目录
输入命令: mv sqoop-env-template.sh sqoop-env-sh
改为 sqoop-env.sh
输入命令:vim sqoop-env.sh
添加下面的内容
export ZOOKEEPER_HOME=/opt/module/zookeeper
export HADOOP_COMMON_HOME=/opt/module/hadoop-3.1.3
export HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3
export HIVE_HOME=/opt/module/hive
export ZOOKEEPER_HOME=/opt/module/zookeeper
export ZOOCFGDIR=/opt/module/zookeeper
把mysql的驱动拷贝到 /opt/module/sqoop/lib 目录下
输入命令: cp mysql-connector-java-5.1.37.jar /opt/module/sqoop/lib/
将mysql 驱动拷贝到 lib 目录下
输入命令:bin/sqoop help
查看命令提示
连接mysql数据库,可以看到已经连接成功了
输入命令:bin/sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password p@ssw0rd
下面是sqoop 导入数据的语法格式
bin/sqoop import \ --导入
--connect jdbc:mysql://hadoop102:3306/shtd_store \ --mysql数据库连接
--username root \ -- 用户
--password p@ssw0rd \ --密码
--table user_info \ --表名
--target-dir /user/dates \ --hdfs 文件地址
--delete-target-dir \ --如果有这个文件就删除,在公司里就不要用了,测试的时候还可以
--num-mappers 1 \ --mappers 数量
--fields-terminated-by "\t" --数据的分割符