hadoop快速入门

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检查文件副本数

hdfs fsck path[-files -blocks]

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任务

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值