1.linux操作系统概述
数据是什么:数据是指对客观事件进行记录并可以鉴别的符号
如果目录文件名字以.开始,就是隐藏目录
如果路径式.开始,是相对路径
1.进行文件增删改查操作
ls 命令
ls /: 查看根目录下的文件
ls ./ :查看当前目录下的文件
ls ../:当前目录地上一级下的目录
ls -a 查看当前文件下文件,包括隐藏文件
ls -l除文件名外,也显示文件形态,拥有者,文件大小等,注意ls -l = ll
cd 命令
pwd : 查看当前操作路径
cd / :进入根目录
cd ~:进入home/root
cd ..:进入当前目录的上一级目录
mkdir命令:创建目录
mkdir -p :创建包含子目录的目录,确保父目录名称存在,不存在就建一个
touch 创建一个空文件
rm 命令:删除文件目录
rm -f:强制删除,无需用户确认,如果是一个目录就不能删除
rm -r :将目录级以下所有递归逐一删除
rm -rf/* :不要尝试,删除根目录下所有目录
cp 命令:复制文件或者目录
cp -r a b 将a及其下级一并复制到b下
mv 命令:移动,重命名
cat 查看小文件打印到console上
more 一页一页翻页查看,对于大文件
tail 查看文件结尾
tail -n 用于显示行数,默认10行
tail -f 用于实时显示动态追加的内容,会把文件尾部显示带屏幕上,而且不刷新,只要文件更新就会显示
echo 写入text文件内容
echo string >> 1.text
> 输出重定向,覆盖原文件
>>追加内容
| 管道命令: 把前一个命令的执行结果交给下一个命令处理,形成多级管道操作
2.tar命令
tar 命令:打包和解包
-c 或者 -create 创建写的备份文件
-x 或者 -extract 从备份中还原文件
-v 或者 -verbose 显示指令执行过程
-f <备份文件> 或者--file=<备份文件>指定备份文件
-z 压缩
tar -cvf 文件名.tar 文件1 文件2 打包
tar -xvf 文件名.tar -C 路径 解包
如果没有 -C 会解压到当前目录
tar -Zcvf 文件名.tar.gz 文件1 文件2 :压缩打包
tar -Zxvf 文件名.tar.gz -C 路径: 压缩解包
3.时间,日期查看
date :显示日期
cal: 显示当前日历
free :用于显示内存状态
free -h
ps 查看进程状态
ps -ef
ps -ef | grep 进程号 精准找到进程查看
jps :java提供的命令,反应Java进程情况
vim基本命令
光标移动:
- 方向键控制光标位置
- 翻页 pageup ,pagedown
- 行首home 0 ,行尾 end $
- 跳到文件最后一行
- 跳到文件第一行 gg
复制 :必须在命令模式下
yy复制当前光标所在行内容
nyy复制当前行往下n行
粘贴:必须在输入模式下
P 当前行下一行粘贴
p 当前行下一行粘贴
删除: dd 删除当前行
ndd删除当前往下n行
撤销:u 撤销是一部操作
CTRL+r 反撤销
2.hadoop介绍及简单搭建过程
Hadoop之父doug cutting
是一款apache软件基金会的一款开源软件
允许用户使用简单编程实现跨机器集群对大量数据处理
hdfs作为分布式文件存储系统,处于生态圈的底层和核心
yarn作为分布式通用集群资源管理系统和任务调度平台,支撑各种运算引擎运行
hadoop特性优点
1.扩容很强
2.成本低
3.效率高
4.可靠性强
hadoop发型版本
Apache Hadoop/
1.开源社区版:apache官方开源:
优点:更新迭代快
缺点:兼容性不稳定
2.商业公司发行
Cloudera:https://www.cloudera.com/products/open/source/apache-hadoop.html
Hortonworks:Cloudera Data Platform (CDP) | Cloudera
商业公司发行想要收费
优点:兼容性好
缺点:收费
hadoop 集群包括hdfs集群,yarn集群
两个集群逻辑上分离没有依赖 互不影响,物理上在一起,部署在一台服务器上
两个集群都是标准的主从架构集群
1.关闭防火墙,避免部分端口用不了
systemctl stop firewalld.service # 关闭防火墙
systemctl disable firewalld.service # 关闭开机防火墙自启动
systemctl status firewalld.service # 查看防火墙状态
2.免密认证
ssh -keygen回车
ssh-copy-id ip或者主机名字
ssh-copy-id node1
ssh node1 # 验证
exit # 退出
3.同步时间
yum -y install ntpdate
ntpdate ntp4.aliyun.com
4.创建部分目录进行区分data和server
data放数据。server放安装的jdk等软件
mkdir -p /export/server
mkdir -p /export/data/hdfs
mkdir -p /export/data/tmp
mkdir -p /export/data/hdfs/name
mkdir -p /export/data/hdfs/data
5.在Hadoop-env.sh配置jdk的路径和hadoop的路径
例如:export JAVA_HOME=/export/server/jdk-1.8
export HADOOP=/export/server/hadoop-3.3.4
6.配置core-site.sh,yarn-site.xml,mapred-site.xml,hdfs-site.xml,workers
7start-all.sh启动集群测试
hadoop内置执行脚本
一键启停集群在hadoop/sbin/下执行:
start-dfs.sh
stop-dfs.sh
单独启停某进程
hadoop-daemon.sh (start |status |stop ) (namenode | resourcemanager| datanode |secondarynamenode)
例如:hadoop-daemon.sh start datanode
3.hdfs基本操作
路径区分:
linux: /export/server
hdfs: /export/server
如何区分?
通过协议头区分
linux:file://
hdfs:hdfs://
如上:
linux:file:///export/server
hdfs:hdfs://ip:8020//export/server
一般不使用,要避免bug或者必须的情况下使用
1.创建文件夹
hadoop fs [ mkdir -p path]
或者 hdfs dfs [mkdir -p path]
hadoop fs mkdir -p file
2.查看文件夹
hadoop fs -ls -h -R
hdfs dfs -ls -h -R
3.上传文件到hdfs指定目录下
hadoop fs -put -f -p linux路径 hadoop路径
hdfs dfs -put -f -plinux路径 hadoop路径
4.查看文件内容
hadoop fs -cat | more :借助管道查看大数据
hdfs dfs -cat | more
5.下载文件
hadoop fs -get linux路径 hadoop路径
hdfs dfs -get linux路径 hadoop路径
6.拷贝hdfs文件可以改名
hadoop fs -cp hadoop路径/名字1 hadoop路径/名字2
hdfs dfs -sp hadoop路径 hadoop路径
7.追加内容
linux使用vim增删改查,而hdfs只能追加,和删除,不能修改某一行等
hdfs dfs -appendToFile linux路径 hdfs路径
hadoop fs -appendToFile linux路径 hdfs路径
8.移动和改名
hdfs dfs -mv [-p] hdfs路径 hdfs路径
hadoop fs -mv [-p] hdfs路径 hdfs路径
9.hdfs删除
回收站默认关闭,默认在/user/用户(hadoop)/.Trash
hdfs dfs -rm [-r] [-f] hdfs路径
hadoop dfs -rm [-r] [-f] hdfs路径
4.HDFS客户端-Jetbrians产品插件
了解在Jetbrians安装使用bigdatatools 产品插件,使用Big Data Tools插件帮助我们方便的操作HDFS,比如idea,pycharm
安装过程:pycharm为例
在设置中——>Plugins(插件)——>marketplace(市场)——>搜索Big Data Tools然后点击安装,在重新启动即可
5.HDFS
hdfs的主从架构:namenode和datanode
5.1存储原理
分布式存储:把文件一分为多份,存入不同服务器,每个节点存储文件的一部分
标准单位:block块,每一块默认256MB
假如有1.5G的文件存入有3台机器的完全分布式系统中,那么原理就是将1.5G文件按block块的大小分为6个block块,每台机器上存储2个块,为了防止某台机器上的块数据丢失,在hdfs上有多副本存储机制,会在其他服务器上有可修改备份,来提高文件的安全性。
1.长久默认设置
hdfs-site.xml中配置副本数量:
<property> <name>dfs.replication</name> <value>3</value>
</property>2.临时设置
在上传文件时使用:hadoop fs -D dfs.replication=2 -put Linux文件 Hadoop路径
已上传地文件使用:hadoop fs -setrep [-R] 2 文件路径
5.2 fsck命令
fsck检查文件副本数
5.3NameNode元数据
- edits
- fsimage
namenode基于edits来记录每次操作,包括时间,路径,什么什么操作的记录,类似于日志
fsimage记录某个时间节点前的当前文件全部文件状态和信息,维护整个文件的数据。
fsimage是又SecondaryNameNode将edits合并得到的,以便于NameNode使用
5.4HDFS数据的读写流程
NameNode权限:可读可写审核
数据写入流程:
1.客户端向NameNode发起请求
2.Namenode审核权限和空间等条件,如果满足条件就允许写入,告知客户端可以写入的DataNode地址
3.客户端向给出的Datanode地址发送数据包
4.接受到数据包的Datanode向其他Datanode发送副本
5.写入完成之后客户端通知NameNode,Namenode做元数据记录工作
6.达到一定量或者到一定时间节点之后有SecondaryNameNode合并为fsimage。
数据读取流程:
1.客户端向NameNode发起访问请求
2.NameNode审核权限,满足条件,则给客户端返回此文件的block列表
3.客户端拿到block列表之后找Datanode读取文件。
注意:namenode不负责数据写入和读取,之负责元数据记录和权限审批,客户端直接给datanode写入或者读取数据。客户端会找网络距离最近的Datanode写入或者读取。
6.分布式计算概述
分布式计算:以分布式的形式完成数据统计,得到需要的数据。提高服务器组合来提高解决大数据的能力。
分散——汇总模式:将数据分为多片,各种完成自己的任务,得出结果汇总给其他服务器。
中心调度——分步执行模式:将一个节点作为中心调度管理者,将任务划分为几个具体步骤,管理者安排每个机器执行步骤,得出结果数据。
6.1MapReduce概述
mapreduce是Hadoop的分布式计算组件之一,mapreduce提供了两个编程接口,map和reduce
map完成分散的功能,对数据进行分布式处理。
reduce完成汇总的功能,对数据完成汇总的任务。
假设有4台服务器执行mapreduce,可以3台机器机器分散,然后一台机器汇总。
6.2YARN概述
一般情况下,MarReduce是基于YARN运行的。
yarn是HADOOP的一个组件,是分布式资源调度,管控整个分布式集群的资源调度使用。yarn为运行的任务分配资源,提高资源利用率。
6.3YARN架构
6.3.1 核心架构
YARN的主从架构: ResourceManager和NodeManager
ResourceManager:整个集群资源调度的管理者,负责协调各个服务器的资源调度。
NodeManager:单个服务器资源调度的管理者,负责协调单个服务器的资源调度。
6.3.2 YARN的辅助架构 (了解)
ProxServer应用代理:作为RM的一部分运行,但是可以独立运行,提高安全性
在yarn-site.xml中配置yarn.web.address配置。
jobHistory:将分散在容器中的日志汇集到hdfs中,记录运行日志并提供WEB UI站点1提供用户使用浏览器查看。
6.4MapReduce&YANR的部署
6.4.1 yarn的部署
yarn.site.xml
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value></property>
<property><name>yarn.log.server.url</name><value>http://test1:19888/jobhistory/logs</value></property>
<property><name>yarn.web-proxy.address</name><value>test1:8089</value><description>proxy server hostname and port</description></property>
<property><name>yarn.log-aggregation-enable</name><value>true</value><description>Configuration to enable or disable log aggregation</description></property>
<property><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value><description>Configuration to enable or disable log aggregation</description></property>
<property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value></property>
<property> <name>yarn.resourcemanager.hostname</name> <value>test1</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_MAPRED_HOME</value></property><property> <name>yarn.webapp.ui2.enable</name> <value>true</value></property><property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value></property>
<property><name>yarn.nodemanager.log-dirs</name><value>/data/nm-log</value></property>
<property><name>yarn.nodemanager.log.retain-seconds</name><value>10800</value></property>
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value></property>
yarn-env.sh
export JAVA_HOME=/export/server/jdkexport HADOOP_HOME=/export/server/hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_LOG_DIR=$HADOOP_HOME/logs
6.4.2 Mapreduce的配置文件
mared-env.sh
export JAVA_HOME=/export/server/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=16
export HADOOP_JHS_LOGGER=INFO,RFA
mapred.site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value></property>
<property> <name>mapreduce.jobhistory.webapp.address</name> <value>test1:19888</value></property>
<property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/data/mr-history/tmp</value></property>
<property> <name>mapreduce.jobhistory.done-dir</name> <value>/data/mr-history/dir</value></property>
<property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value></property><property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value></property><property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value></property>
到此yarn和Mapreduce已经配置完成
- yarn集群命令:start | stop -yarn.sh
- 单个机器yarn:yarn --daemon start | stop resourcemanager | nodemanager I proxyserver
- 历史服务器启动和停止: $HADOOP_HOME/bin/mapred --daemon start|stop historyserver
6.5MapReduce&YARN的初体验
启停命令
- yarn集群命令:(start | stop) -yarn.sh
- 单个机器yarn:yarn --daemon (start | stop) (resourcemanager | nodemanager I proxyserver)
- 历史服务器启动和停止: $HADOOP_HOME/bin/mapred --daemon (start|stop) historyserver###### 提交自带mapreduce实例程序到yarn运行
yarn作为资源调度管理者,本身有一些常用的程序运行Mapreduce,flink,spark程序
常用的mapreduce程序:在HADOOP-HOME/share/hadoop/mapreduce/hadoop-mapreduce-example-3.3.4.jar文件内
wordcount:单词计数程序
pi :求圆周率
语法: hadoop jar 程序文件 Java类名 输入文件地址 输出文件地址
wordcount使用:
hdfs dfs -mkdir /input 创建input文件里面上传一个hello.txt
hdfs dfs -put hello.txt /input/
hdfs dfs -mkdir /output 创建一个output来收集结果
hadoop jar HADOOP-HOME/share/hadoop/mapreduce/hadoop-mapreduce-example-3.3.4.jar wordcount /input/hello.txt /output/
pi使用:
hadoop jar HADOOP-HOME/share/hadoop/mapreduce/hadoop-mapreduce-example-3.3.4.jar pi 3 1000
1000 为随机样本数,样本越多越精确
3 表示map任务
版权归原作者 Charlotte384 所有, 如有侵权,请联系我们删除。