如何修改网站,网站设计公司成都,北京企业建设网站,苏州北京网站建设大数据
要了解大数据#xff0c;我们就要先了解什么是数据#xff1f;
数据就是指人们的行为#xff0c;人们的某个行为都被称为是一项数据#xff0c;这些数据可以用来对生活中各种各样的事物进行分析#xff0c;而我们进行分析所需要的技术就是我们所学的大数据的一系…大数据
要了解大数据我们就要先了解什么是数据
数据就是指人们的行为人们的某个行为都被称为是一项数据这些数据可以用来对生活中各种各样的事物进行分析而我们进行分析所需要的技术就是我们所学的大数据的一系列的技术栈
所谓大数据就是指将现在的数据进行处理并得出一定结果的技术
其中大数据的核心工作就是从海量的高增长、多类别、低信息密度的数据中发掘出高质量的结果
由此延伸而出的大数据核心工作就是数据存储、数据计算、数据传输
大数据框架
数据存储
Hadoop中的HDFS
Hbase是最为广泛的NoSQL技术、
Apache KUDU 也是类似于Hadoop的分布式存储技术
数据计算
Apache中的MapReduce以及基于MapReduce的Hive
也包括Apache Spark 内存计算以及 Apache Flink实时计算
数据传输
Apache Kafka分布式消息系统、Apache Pulsar分布式消息系统、Apache Flume流式数据采集工具、从很多数据源中获取数据、Apache Sqoop
Hadoop
在广泛意义上、Hadoop是指一个技术框架其内部的三个核心技术分别是HDFS分布式存储、MapReduce分布式计算、YARN分布式资源调度
HDFS
HDFS是一个分布式存储框架。
为什么我们需要分布式存储框架呢 ---- 因为我们的大数据项目数据量太大单机的存储是有极限的另一方面分布式存储中存储效率、网络传输磁盘读写方面也能有很高的性能提升故我们有一个分布式存储系统是十分必要的
Hadoop框架下的分布式框架是典型的中心化模式的存储框架另外还有去中心化的分布式框架区块链
HDFS的基础架构
NameNode主角色负责管理整个HDFS存储系统、以及Datanode
Datanode从角色多个主要负责数据的存储
SecondaryNameNode主角色的辅助处理元数据
在我们的分布式机器上部署HDFS的过程
在hadoop官网上下载hadoop3.3.4版本的hadoop
Hadoop部署
部署规划
我们在 node1 4G内存中心节点机器上部署 Namenode、Datanode、Secondarynamenode
在 node2 2G内存从节点和 node3 2G内存从节点机器上部署 Datanode 信息
部署流程
将下载的hadoop.tar.gz上传到 用户目录下再解压到 /export/server 目录中
tar -zxvf hadoop-3.3.4.tar.gz -C /export/server之后我们进到/export/server应该可以看到一个名为hadoop的文件夹
之后为了寻找方便给这个文件夹创建一个软连接 ln -s hadoop-3.3.6 hadoop之后我们进入到hadoop-3.3.4文件夹内
bin 存放hadoop的各种命令重要
etc 存放hadoop的配置文件重要
include 存放C语言的一些头文件
lib 存放linux系统的动态链接库
libexec 存放hadoop系统的脚本文件
licenses-binary 存放许可证文件
sbin 管理员程序重要
share 存放二进制源码jar包文件配置
配置 workers 文件这个文件在 hadoop-3.3.4/etc/hadoop 文件夹下这个文件标注了我们的Datanode机器节点都有哪些这里我们添加为
node1
node2
node3注意我们打开workers文件时其可能会有一定的内容我们删除 workers 文件中自带的 localhost 内容再进行上面的添加操作
配置 hadoop-env.sh 文件该文件标识了我们的 JAVA 环境的地址、hadoop 环境的地址、hadoop 配置文件的地址、hadoop 日志文件的地址
export JAVA_HOME/export/server/jdk
export HADOOP_HOME/export/server/hadoop
export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR$HADOOP_HOME/logs配置core-site.xml文件在该文件中配置了HDFS文件系统的网络通讯路径以及io操作文件的缓冲区大小
其中fs.defaultFS指定了namenode也就意味着我们后面在使用的时候都必须启动Namenode
configurationpropertynamefs.defaultFS/namevaluehdfs://node1:8020/value/propertypropertynameio.file.buffer.size/namevalue131072/value/property配置 hdfs-site.xml 该文件中标注了
dfs.datenode.data.dir.perm新建文件的权限我们配置为 700 代表着文件具有 rwx------- 的权限
dfs.namenode.name.dirNameNode 元数据的存储位置
dfs.namenode.hosts该NameNode 所允许的datanode 是哪些
dfs.blocksizehdfs的默认块大小
dfs.namenode.handler.count100 能够处理的并发线程数由于我们在本地虚拟机上运行其CPU性能太低这个值设置高了也没有意义
dfs.datanode.data.dir/data/dn 机器作为datanode其数据存储的位置 /propertypropertynamedfs.namenode.name.dir/namevalue/data/nn/value/propertypropertynamedfs.namenode.hosts/namevaluenode1,node2,node3/value/propertypropertynamedfs.blocksize/namevalue268435456/value/propertypropertynamedfs.namenode.handler.count/namevalue100/value/propertypropertynamedfs.datanode.data.dir/namevalue/data/dn/value/property
/configuration注意这里我们配置了Namenode数据的存储位置和node1作为 Datandoe 的存储位置故我们必须创建对应的文件夹下面是绝对路径
mkdir -p /data/nn
mkdir -p /data/dn我们在node2 和 node3中要配置的是 dn 目录的路径
mkdir -p /data/dn之后我们将 hadoop-3.3.4 目录复制到 node2 和 node3 同样的目录下
scp -r hadoop-3.3.6 node2:pwd/
scp -r hadoop-3.3.6 node3:pwd/这之后Hadoop就在我们的三台机器上全部安装并配置完成了最后我们还需要再配置一下环境变量
我们在/etc/profile文件中最下面配置三台机器都得配
export HADOOP_HOME/export/server/hadoop
export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin之后
source /etc/profile使环境变量文件配置生效
最后我们为了让hadoop用户也可以使用hadoop环境我们要修改hadoop目录以及dn和nn文件的权限
将 /data 目录、/export 目录全部都配置给 hadoop 用户
三台机器都需要修改
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export其中 -R 的意思是 将目录与其子目录都进行修改
此时我们的前期安装配置工作就全部完成了
进一步的前期准备
格式化存储空间
hadoop namenode -format格式化之后若 /data/nn 目录中存有文件的话则证明我们格式化成功了
我们可以通过一键启动来尝试判断我们的启动是否成功
start-dfs.sh之后使用 jps 命令来查看运行中的 Java 环境我们看到 namenode、datanode、secondarynamenode 时启动就成功了我们的子节点存在 datanode 一个进程
之后我们在浏览器里使用
node1:9870地址来访问 hadoop 的 Web UI 界面
我们通过下面的命令一键停止hadoop服务
stop-df.sh一些另外的操作
我们可以进入logs文件夹下使用tail -100 日志名 命令查看最后100行的日志情况
HDFS集群环境部署
HDFS 启停命令
sbin/start-dfs.sh 文件一键启动HDFS集群
执行原理
在哪个机器上执行这个脚本HDFS就会将哪个机器当做 SecrondaryNamenode
之后HDFS会在机器上读取core-site.xml文件的内容确定fs.defaultFS项确认NameNode所在的机器并启动Namenode
之后HDFS会读取workers内容确认DataNode所在的机器并启动所有的DataNode同样的我们的关闭命令
sbin/stop-dfs.sh 也会以同样的顺序读取相同的文件并对应的关闭对应的SecondaryNamenode、Namenode、Datanode除了一键部署这里还有单独部署的操作
我们使用下面的命令可以只单独设置某一台机器的启停
sbin/hadoop-deamon.sh 控制当前所在机器的启停
hadoop-deamon.sh (start|status|stop) (namenode|secondarynamenode|datanode)bin/hdfs 此程序也用于单独控制当前机器的启停
hdfs --deamon (start|status|stop) (namenode|secondarynamenode|datanode)Linux 中文件系统的协议头是file:// 我们以根路径选择文件的写法file:/// , 最后一个 / 代表根路径
HDFS的协议hdfs://namenode:port/ 以这个开始
假设我们有一个文件hello.txt 在下面这个路径
Linux: file:///usr/local/hello.txt
HDFS: hdfs://node1:8020/usr/local/hello.txt但一般情况下我们是不需要写这两个文件头的因为HDFS会自动帮我们写上这个
HDFS 文件操作命令
HDFS 文件操作命令分为
hadoop fshadoop dfs
这样两套命令体系前者为老版本的命令体系两者对于文件操作系统的用法完全一致只有在某些特殊方法时会有所不同
创建文件夹
hdfs dfs -mkdir -p /home/hadoop/qinghe查看目录内容
hdfs dfs -ls /...
hdfs dfs -ls -R /... 查看指定目录的内容及其子目录的所有内容
hdfs dfs -ls -h /... 查看文件内容并查看大小将文件从Linux中上传到hdfs中
hdfs dfs -put /... /... 前一个路径是文件在Linux中存放的位置后一个路径是上传到HDFS中的位置
hdfs dfs -put -f /... /... 若目标文件夹已有同名文件则对其进行覆盖
hdfs dfs -put -p /... /... 保留访问和修改的时间与权限信息查看上传的文件
hdfs dfs -cat /... 查看文件内容
hdfs dfs -cat /... | more 以翻页的形式查看文件内容下载HDFS中的文件到Linux
hdfs dfs /... /... 将hdfs中的文件下载到Linux中的指定为止
hdfs dfs -f /... /... 下载hdfs中的文件如果发生冲突则直接覆盖
hdfs dfs -p /... /... 保留访问和修改的时间与权限信息复制操作
hdfs dfs -cp /... /... 这两个路径都是hdfs中的路径其会将第一个路径位置的文件复制到第二个文件若指明了文件的名字则其也具有重命名的效果在HDFS中我们对文件的修改操作只支持追加和删除不支持一点点修改
追加操作将Linux中的文件信息追加到Hdfs的文件中
hdfs dfs -appendToFile /... /... 前一个文件必须存储在Linux中第二个文件是HDFS中的文件该指令会将Linux中的文件的内容添加到HDFS中文件的移动
hdfs dfs -mv /... /... 将前一个文件移动到后一个文件目录中同样的若指明了文件的名字则其也具有重命名的效果文件的删除
hdfs dfs -rm -r /... 删除指定目录及其子目录中的所有内容
hdfs dfs -rm /... 删除指定文件该命令不能删除文件夹再删除中需要注意HDFS是具有回收站功能的但是HDFS中默认是不开启回收站机制的我们可以通过如下配置来配置HDFS的回收站功能
编辑如下路径的配置文件/export/server/hadoop/etc/hadoop/core-site.xml propertynamefs.trash.interval/namevalue1440/value/propertypropertynamefs.trash.checkpoint.interval/namevalue120/value/property这两个配置配置完成之后我们就开启了回收站机制
第一个配置1440指的是回收站会存储的数据存储一天超过一天会自动清除
第二个配置指的是我们每2小时对回收站进行检查清除超过存储时间的数据
该配置即时生效无需重启但配置只在对应的node节点机器上生效
如果我们配置了回收站我们在删除文件时就会将其移动到回收站中回收站的位置是HDFS系统中的
/user/hadoop/.Trash/Current
若我们在回收站开启的时候不希望将文件放到回收站中而希望将文件直接删除则我们需要添加 -skipTrash 参数
hdfs dfs -rm -r -skipTrash /...另外的操作
使用下面命令单点启动 hdfs
hdfs --daemon start datanode关闭
hdfs --daemon stop datanode一键开启所有结点
注意该命令不可以在 root 下运行
start-dfs.sh
stop-dfs.sh新建/opt/bin/jps-cluster.sh 创建一个可以快速查看多个节点信息的脚本
#!/bin/bashHOSTS( node1 node2 node3 )for HOST in ${HOSTS[*]}
doecho ---------- $HOST ----------ssh -T $HOST DELIMITERjps | grep -iv jpsexit
DELIMITER
done之后将这个脚本软连接到 /usr/bin 目录下由于这个目录是被配置在环境变量中的故我们将存储的软连接存放在这个目录时就可以让这个让这个脚本直接被调用
注意这里必须写绝对路径
ln -s /opt/bin/jps-cluster.sh /usr/bin之后调用脚本就可以看见各机器上的 jps 情况了
---------- node1 ----------
30980 NameNode
31676 SecondaryNameNode
31197 DataNode
---------- node2 ----------
22151 DataNode
---------- node3 ----------
21291 DataNodeHadoop 在运行时会输出日志这个日志被生成在 hadoop 根目录下
输出的日志是 .out 文件但 .out 文件最后会被集成在 .log 文件下所以我们只需要查看 .log 文件就可以了
经典案例 wordcount
词频统计经典案例
统计文件中单词的出现次数
创建文件夹 /test_file/input 并进行输入
echo hello world hadoop linux hadoop file1
echo hadoop linux hadoop linux hello file1
echo hadoop linux mysql linux hadoop file1
echo hadoop linux hadoop linux hello file1
echo linux hadoop good programmer file2
echo good programmer qianfeng good file2将文件上传到 hdfs 根目录 hdfs dfs -put /test_file/input/ /hdfs dfs ls -R /之后我们调用下面的语句:
hadoop jar /export/server/hadoop-3.3.6/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output之后我们调用下面的命令就可以查看具体的内容了
hdfs dfs -cat /output/*注意在生成的这条命令中/output 文件夹必须是没有被创建的