前言
- 时间:2021.8.12
- 内容:
- Linux总结
- Hadoop:安装单机模式
- Hadoop:伪分布式安装
1 Linux总结
-
10号那篇也比较全,这里就稍微复习就好啦~
-
改一个地方 不是ifconfig 是ipconfig
2 概念
2-1 分布式和集群
- 分布式:来了一个任务,分解成多个任务去做它。
- 集群:来了一个任务,每个人都可以去做,每个人收到的任务都是一样的。
2-2 Hadoop
- 四大特点
- 数据体量巨大:PB->EB->ZB级
- 速度要求快:数据输入输出的速度
- 数据类型多样:文本、图像、视频、音频
- 价值密度低、商业价值高
- 主要有五个组件,有一个还在测试环境就不写上来了(面试会问他们之间的配合)
- Common
- DHFS:分布式文件系统。用于存储数据。
- MapReduce:分布式计算框架。用于计算(Map计算、Reduce计算)。
- YARN:资源管理框架。用于协调管理CPU、内存、硬盘,进行虚拟化管理,运行MapReduce。
2-3 YARN
-
这是拿来干什么用的呢?
-
形象化来说,就像老师的高级桌一张能坐2个人,学生的普通桌一张能坐1个人。那么在学区这个空间里,能坐的总人数是 2 * 高级桌数 + 1 * 普通桌 数。
-
整个空间就是YARN,不同的CPU就是不同的房间,不同的centos就是不同的桌子,而容器数就是改空间能坐的总人数。
-
-
进一步理解:
- 比方说这个块儿就是我们的电脑,这个块儿里面每一个Centos都是一个机器,每个机器上都装了个hadoop。要用的时候YARN会把每个电脑都虚拟成一个新的容器,每个电脑虚拟出来的容器数量由机器本身硬件的好坏决定,硬件抗的住就多虚拟出来一些容器。
- 我们自己本机的电脑用virtualBox虚拟了一次,虚拟出很多虚拟机电脑,同桌也虚拟出很多虚拟电脑,这些是不一样配置的。而YARN相当于在此基础上的二次虚拟,能虚拟出一样配置的容器,虚拟出的数量是根据硬件配置来的。(虚出来的容器数量不一样,容器一样)可以把这个容器理解为一个操作系统。
2-4 DHFS架构(记的很乱…)
-
流程
- 先是拿到ResourceManager,按照资源情况分配给不同的节点,节点拿到之后按照容器去执行任务?????
-
NameNode和SecordaryNode关系(面试会问)
- SecordaryNode是一个用于协助备份的东西,会同步NameNode里的数据内容。当NameNode坏了的时候,不是直接将SecondaryNode升级为NameNode,而是先把NameNode修好,再去把SecordaryNode里的数据拷贝回NameNode。
-
进程
- ResourceManager:是主节点,管理所有其他的NodeManagers
- NodeManager:是从节点,管理本地的资源,把资源虚拟成容器,任务管理器,然后在任务管理器上运行????????
-
容器
- Docker:启动一个进程/线程,操作系统(说白了就是把操作系统虚拟化成一个进程)。
-
MapReduce(面试)
- 分为两个阶段…(不知道为啥没记完…忘了要记啥…
3 操作
3-1 安装单机模式
-
模式大概分如下几种:
- 单机模式
- 在一个Centos系统上进行安装
- 能进行MapReduce计算
- 不需要YARN
- 伪分布式
- 一个电脑模拟多个电脑
- 完全分布式
- 至少4台电脑
- 其他
- HDFS NameNode HA 5台电脑
- HDFS NameNode联盟 7台电脑
- YARN HA 5台
- 单机模式
-
安装步骤:
-
下载,上传,解压,移动
-
先决条件:JDK和java环境变量先搞好
tar -zxvf xx.tar
-
解压好hadoop-3.3.1.tar.gz文件后,进入haoop-3.3.1文件夹,再进入里面的share文件夹,会发现这里有两个文件夹(doc和hadoop),删除doc
-
把hadoop-3.3.1这个文件夹移动到/usr/java/下
-
-
测试
-
最经典的计算:单词统计WordCount
- 统计文本文件中的单词数量
- select count(*) from users;
-
关于数据
- 结构化数据:数据库表中的数据,比如excel表。有描述信息。
- 非结构化数据:文本文件。没有描述信息,以规则限定。
-
测试过程
-
在hadoop-3.3.1这个文件夹下新建一个任意名字t.a的文件,输入任意数量的单词,以空格隔开。
-
执行指令去进行MapReduce计算,执行完后会在当前目录下生成out文件夹,注意位置为${HADOOP_HOME}/bin/hadoop [jar] [运行的jar文件位置] [jar运行程序的参数] [执行的源文件] [结果输出的目录]
[hadoop@master-yh hadoop-3.3.1]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount ./t.a ./out
-
查看out文件夹里的part-r-00000文件,可以看到单词的计数结果,仅对空格和换行作为分隔。
-
-
-
3-2 伪分布式操作
-
官网: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
-
先决条件:JDK安装、配置ip地址和主机名的映射、免密登录
-
修改配置文件
- 位置:${HADOOP_HOME}/etc/hadoop/
- 注意以下所有操作都在hadoop-3.3.1这个文件夹目录下进行,不要在etc前面加/
- common hdfs*2 MapReduce YARN 节点
- 配置Hadoop环境信息(暂时不需要,完全分布式时候就要了)
- hadoop-env.sh
-
配置HDFS
-
etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
-
etc/hadoop/hdfs-site.xml
甚至可以让服务器放在不同的机架上。value是指的是把文件小块复制成几份备份副本。如果只有一个服务器,就没有必要加副本,1个就够。
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
-
测试
-
格式化NameNode
bin/hdfs namenode -format
-
启动hdfs系统
sbin/start-dfs.sh
-
输入jsp查看任务管理系统下跑了几个进程
正常来说,是Jps、SecondaryNameNode、NameNode、DataNode四个进程。如果只有Jps说明前面有地方报错了,kll -9 端口号 去杀掉进程。
-
此时可在页面上看到网页(用自己的主机ip,端口写成9870就行)
http://192.168.137.120:9870
-
-
报错
-
如果报权限问题,就去把配置文件改一下,hdfs://localhost:9000改成hdfs://master-yh:9000,也就是原来localhost的地方改成在虚拟机上创建该主机时命名的名字。然后再做第2步启动测试。
-
发现jsp里仍然只有自己这个jsp程序在运行,接下来再用su改到root权限下之后,加个映射(用该虚拟机的ip和名字)。exit退出root权限之后再做第2步启动测试。
su vi /etc/hosts 192.168.137.120 master-yh
-
发现还是不行,再加个免密登录就行了。(位置:主目录~)回到hadoop-3.3.1去启动测试下,可查看到4个进程。
ssh-keygen -t rsa //生成密钥,回车之后,三次回车 ssh-copy-id-i 主机名 //拷贝密钥到自己 exit //登出
-
如果jps正常,但网页无法访问,有可能是防火墙没关
service firewalld status service firewalld stop
-
-
-
配置MapReduce
-
etc/hadoop/mapred-site.xml
注意这里的$HADOOP_MAPRED_HOME要改成自己的路径哦,我的是/usr/java/hadoop-3.3.1
<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>
-
-
配置YARN
-
etc/hadoop/yarn-site.xml
<configuration> <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>
-
测试:
-
启动yarn会出现resourcemanager和nodemanagers
sbin/start-yarn.sh
-
jps之后会出现6个(有3个是前面hdfs时候启动的)
ResourceManager SecondaryNameNode NameNode DataNode NodeManager JPS
-
此时可在页面上看到网页(用自己的主机ip,端口写成8088就行,前面测hdfs时候是9870)
http://192.168.137.120:8088
-
-
-
配置数据节点(暂时什么都不用设置)
worker
4 成功
- (这里应该是打开了网页就好了,有默认的一个datanode结点,出现这么三个四个结点好像是完全分布式时候的截图)
- 8088和9870两个端口的网页都能显示三个
- master的能启动四个,其他的都是启动三个