IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 全国大学生大数据技能竞赛 —— 分布式平台搭建(待更) -> 正文阅读

[大数据]全国大学生大数据技能竞赛 —— 分布式平台搭建(待更)

基础部分

一、基础搭建

1、更改主机名

● 更改主机名为master:hostnamectl set-hostname master
在这里插入图片描述
同理修改slave1和slave2的主机名


hostnamectl命令详解

(1)查看主机相关信息:hostnamectl或者hostnamectl status
(2)修改主机名:hostnamectl set-hostname 新主机名

参考文章:
Linux 命令之 hostnamectl – 查看/修改当前主机的信息

2、配置hosts文件(三台机器都要执行)

● 编辑hosts文件:vim /etc/hosts
在这里插入图片描述
编辑etc中的hosts文件
在这里插入图片描述
输入各节点的IP和主机名

3、关闭防火墙

● 关闭防火墙:systemctl stop firewalld
● 查看防火墙状态:systemctl status firewalld
在这里插入图片描述

参考文章:
systemctl命令详解(此处仅用到了防火墙的开关以及状态查看,其余有空可以详细地学习一下)

4、时间同步

● 选择时区:tzselect
在这里插入图片描述
在这里插入图片描述


注意:tzselect命令用于选择时区。要注意的是tzselect只是帮我们把选择的时区显示出来,并不会实际生效,也就是说它仅仅告诉我们怎么样去设置环境变量TZ。(TZ = Time Zone)如果你要永久更改时区,按照tzselect命令提示的信息,在.profile或者/etc/profile中设置正确的TZ环境变量并导出。

参考文章:
Linux tzselect --选择时区

(该部分缺少ntp时间同步,整理完全过程再细学一下这里)

5、配置ssh免密

● 在master上生成公私密钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
在这里插入图片描述
● 将master公钥id_dsa复制到slave1和slave2上,并进行公钥认证(可以通过远程登录进行验证):
ssh-copy-id -i /root/.ssh/id_dsa.pub slave1
ssh-copy-id -i /root/.ssh/id_dsa.pub slave2
● 退出连接:exit
在这里插入图片描述
同理可以将master公钥复制到master上或配置其他免密。


DSA:digital signature Algorithm 数字签名。
RSA:既可以数字签名又可以加密。

ssh-keygen常用参数详解

选项详解
-t指定生成密钥的类型,默认使用SSH2d的rsa
-f指定生成密钥的文件名,默认id_rsa(私钥id_rsa,公钥id_rsa.pub)
-P提供旧密码,空表示不需要密码(-P ‘’)
-N提供新密码,空表示不需要密码(-N ‘’)
-b指定密钥长度(bits),RSA最小要求768位,默认是2048位;DSA密钥必须是1024位(FIPS 1862标准规定)
-C提供一个新注释
-R hostname从known_hosta(第一次连接时就会在家目录.ssh目录下生产该密钥文件)文件中删除所有属于hostname的密钥

ssh-copy-id命令详解
(1)作用:ssh-copy-id 将你的公共密钥填充到一个远程机器上的authorized_keys文件中。
(2)语句:ssh-copy-id [-i [公钥在本主机上的路径]] [user@] 远程机器主机名

参考文章:
ssh-keygen常用选项详解
ssh-copy-id命令详解 & 使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录
ssh命令详解

二、安装JDK

● 解压jdk压缩包至/usr/java中:tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/java(在master执行)
● 修改环境变量:vim /etc/profile,添加内容如下(在master执行):
此处并未明白环境变量的详解

export JAVA_HOME=/usr/java/jdk1.8.0_202
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

在这里插入图片描述
生效profile文件:source /etc/profile(在master执行)
● 查看java版本:java -version
这里出现版本与所安装版本不同的情况,即安装为1.8.0_202版本,而此处显示为1.8.0_131版本
在这里插入图片描述

● 在master中将JDK复制到slave1和slave2中(master执行)
tar -zcvf /usr/java/jdk1.8.0_202.tar.gz jdk1.8.0_202
在这里插入图片描述
scp /usr/java/jdk1.8.0_202.tar.gz root@slave1:/usr
scp /usr/java/jdk1.8.0_202.tar.gz root@slave2:/usr
在这里插入图片描述
● 并在slave1和slave2中解压并配置环境变量,检查java版本是否正确


tar常用选项详解

选项详解
-z是否同时具有gz属性
-x解压缩、提取打包的内容
-c建立一个压缩,打包文档
-v显示压缩或者打包的内容
-f使用文件名,在f后面要接压缩后的文件的名字,只要用到tar命令,-f选项是必须要用的,-f参数在使用的时候一定排在其他参数的后面,在最右边
-C切换到指定目录,表示指定解压缩包的内容和打包的内容存放的目录

(1)解压tar.gz文件:tar -zxvf 解压文件路径 -C 解压后存放的路径
(2)压缩文件夹为tar.gz文件:tar -zcvf 打包后生成的文件名全路径 要打包的目录

scp命令常用详解

(1)从远处复制文件到本地目录

单个文件:scp [用户名]@[服务器名或ip]:[远程机器文件的路径] [本地的指定目录]
递归复制整个目录的文件:scp -r [用户名]@[服务器名或ip]:[远程机器文件夹的路径] [本地的指定目录]

(2)上传本地文件到远程机器指定目录

单个文件:scp [本地文件的路径] [用户名]@[服务器名或ip]:[远程机器的指定目录]
递归复制整个目录的文件:scp -r [本地文件夹的路径] [用户名]@[服务器名或ip]:[远程机器的指定目录]

参考文章:
Linux压缩打包命令——tar、zip、unzip
Linux下压缩某个文件夹(文件夹打包)
Linux安装JDK1.8后,java -version仍然显示版本为1.7的问题
Linux scp命令参数详解

三、安装zookeeper

● 解压zookeeper至/usr/zookeeper中:tar -zxvf zookeeper-3.4.5-cdh5.10.0.tar.gz -C /usr/zookeeper
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在zookeeper目录中,创建配置中所需要的zkdata和zkdatalog两个文件夹(在master执行):

cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0
mkdir zkdata
mkdir zkdatalog

在这里插入图片描述
在这里插入图片描述
● 配置文件zoo.cfg(在master执行)
将simple配置文件拷贝为默认配置文件:

cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/conf
mv zoo_simple.cfd zoo.cfd

在这里插入图片描述
对 zoo.cfd文件配置如下:vim zoo.cfg

ticktime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdata
clientPort=2181
dataLogDir=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

在这里插入图片描述

● 进入zkdata文件夹,创建myid文件,用于表示是几号服务器
cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdata
vim myid编辑内容为1,即1号服务器

● 远程发送zookeeper给slave1和slave2,接收后更改myid文件
scp -r /usr/zookeeper root@slave1:/usr
scp -r /usr/zookeeper root@slave2:/usr
在这里插入图片描述
在这里插入图片描述
● 添加zookeeper环境变量:vim /etc/profile

export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0
export PATH=$PATH:&ZOOKEEPER_HOME/bin

生效:source /etc/profile
在这里插入图片描述
在这里插入图片描述
● 启动zookeeper集群
在Zookeeper启动的时候出现了报错,可能是先前的zookeeper是直接对电脑进行强制关机所导致的。
报错代码:Starting zookeeper ... already running as process 5688.,使用kill -9 杀死线程后,开启及状态均正常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
● jps查看进程:
在这里插入图片描述


zoo.cfg文件配置详解

参数详解
tickTime基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。
dataDir存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
initLimit这个配置项是用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
syncLimit这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒
server.A = B:C:DA 表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader

参考文章:
ZooKeeper配置文件zoo.cfg详解
Zookeeper启动报错 Starting zookeeper … already running as process 5688.

四、安装hadoop

4.1解压 hadoop 安装包

● 解压hadoop至/usr/hadoop中(在master中进行):tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop
● 添加hadoop环境变量(三台机器执行):vim /etc/profile

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin

在这里插入图片描述
生效:source /etc/profile

4.2配置 hadoop 各组件

● 编辑 hadoop-env.sh 配置文件

cd $HADOOP_HOME/etc/hadoop
vim hadoop-env.sh
修改java环境变量:export JAVA_HOME=/usr/java/jdk1.8.0_202

● 编辑 core-site.xml 文件

<configuration>
<!-- 定义文件系统的实现,默认是file:///本地文件系统  需要我们改成 hdfs://分布式文件存储系统   -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://master:9000</value>
</property>
<!-- 临时数据存放的位置 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/usr/hadoop/hadoop-2.7.7/hdfs/tmp</value>
</property>
<!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
<property>
	<name>io.file.buffer.size</name>
	<value>131072</value>
</property>
<!-- fs.checkpoint.period 同步检查时间,缺省是3600秒1小时。测试时设为20秒 -->
<property>
	<name>fs.checkpoint.period</name>
	<value>60</value>
</property>
<!-- fs.checkpoint.size 当edit 日志文件大于这个字节数时,即使检查时间没到,也会触发同步 -->
<property>
	<name>fs.checkpoint.size</name>
	<value>67108864</value>
</property>
</configuration>

*master:在主节点的 ip 或者映射名。
*9000:主节点和从节点配置的端口都是9000。
● 编辑 mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
添加如下:
<!-- 指定我们mapreduce运行在yarn集群上面 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

● 修改 yarn-site.xml

<configuration>
<!-- RM对客户端暴露的地址,客户端通过该地址向RM提交应用程序等 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<!-- RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源等 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<!-- RM对外暴露的web  http地址,用户可通过该地址在浏览器中查看集群信息 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<!-- RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<!-- 管理员可以通过该地址向RM发送管理命令等 -->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--  -->
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapreduce.ShuffleHandler</value>
</property>
</configuration>

● 编辑 hdfs-site.xml

<configuration>
<!-- 配置系统自动数据备份数量为3份(默认是3份) -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- NameNode 元数据存放位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/software/hadoop-2.7.7/hdfs/name</value>
<final>true</final>
</property>
<!-- DataNode在本地磁盘存放block的位置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/software/hadoop-2.7.7/hdfs/data</value>
<final>true</final>
</property>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.hosts</name>
<value>/usr/software/hadoop-2.7.7/conf/datanode-allow.list</value>
<description>允许加入集群的节点列表</description>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/software/hadoop-2.7.7/conf/datanode-deny.list</value>
<description>拒绝加入集群的节点列表</description>
</property>
</configuration>

● 编辑 slaves 文件:删除localhost,添加slave1slave2,使 master 仅作为名称节点来使用(master文件???
● 远程发送zookeeper给slave1和slave2(别忘记配置 hadoop 环境变量)
scp -r /usr/hadoop root@slave1:/usr
scp -r /usr/hadoop root@slave2:/usr

4.3格式化 hadoop 并开启 hadoop 集群

● 格式化 namenode :hadoop namenode -format
出现Exiting with status 0的时候,表示格式化成功
● 开启 hadoop 集群(仅在master上开启),回到 hadoop 目录:sbin/start-all.sh


hadoop中常用文件夹及作用简介

文件夹名称作用
binshell脚本
sbinshell脚本,如启动hdfs需要用到
etc/hadoop所有配置文件的路径
lib/native本地的C程序库

hadoop六个配置文件详解

配置文件作用
core-site.xml核心配置文件,主要定义了我们文件访问的格式 hdfs://
hadoop-env.sh主要配置我们的java路径
hdfs-site.xml主要定义配置我们的hdfs的相关配置
mapred-site.xml主要定义我们的mapreduce相关的一些配置
slaves控制我们的从节点在哪里 datanode nodemanager在哪些机器上
yarm-site.xml配置我们的resourcemanager资源调度

参考文章:
详解Hadoop六个配置文件的作用
namenode崩溃的数据恢复测试
yarn-site.xml参数配置详解

五、安装hbase

六、安装hive

提高部分

七、Spark安装

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:08:30  更:2021-08-14 14:09:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 8:57:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码