02. HDFS安装配置、Shell命令

HDFS安装配置、Shell命令

一、概述

1). 优点

  1. 分布式
  2. 运行在通用廉价的硬件上(commodity hardware)
  3. 高容错(fault-tolerant)
  4. 提供高吞吐量 high throughput
  5. 大数据集 large data sets

2). 分布式文件系统

  1. 普通文件系统:Linux/Windows/Max...

    • 单机
    • 目录结构
    • 存放文件夹/文件
    • 对外提供服务:创建、修改、删除、查看、移动等等
  2. 分布式文件系统

    • 横跨N个机器

3). HDFS主要设计目标

  1. Hardware Failure: 硬件故障
    每个机器只存储文件的部分数据
    HDFS默认采用3副本机制
    核心目标: 检测故障并快速,自动地从故障中恢复

  2. Streaming Data Access: 流式数据访问
    设计用于批处理 batch processing
    the emphasis is on high throughput of data access rather than low latency of data access.
    重点在于高吞吐量而不是数据的低延迟

  3. Large Data Sets : 大规模数据集

  4. Moving Computation is Cheaper than Moving Data: 移动计算 比 移动数据 更划算

4). HDFS的架构【*****】

可以参考官网 https://hadoop.apache.org/docs/stable/ -> 左边目录HDFS -> Architecture

  1. NameNode(NN, master) and DataNodes(DN, slave)

  2. master/slave的架构 主从架构

  3. NameNode(NN):
    the file system namespace
    regulates access to files by clients

  4. DataNode(DN):storage

  5. HDFS exposes a file system namespace and allows user data to be stored in files.

  6. a file is split into one or more blocks

  7. blocks are stored in a set of DataNodes

  8. NameNode executes file system namespace operations: CRUD

  9. NameNode:determines the mapping of blocks to DataNodes: 文件映射(用户不用感知)

  10. 通常情况下是,一个Node部署在一台机器上

二、Linux环境配置

虚拟机使用的为VMwarePro15

  1. Linux版本:CentOS7.3
  2. ip配置:192.168.10.188; 需要配置V8网卡以及虚拟机静态IP
  3. 主机名:hadoop000
  4. 用户名:hadoop
  5. hostname改为:hadoop000
  6. 客户端工具 MobaXterm,ssh登录:ssh hadoop@192.168.10.188
  7. 所需要的目录(合适的文件存放在合适的目录)
[hadoop@hadoop000 ~]$ mkdir software   存放课程所使用的软件安装包
[hadoop@hadoop000 ~]$ mkdir app        存放课程所有软件的安装目录
[hadoop@hadoop000 ~]$ mkdir data       存放课程中使用的数据
[hadoop@hadoop000 ~]$ mkdir lib        存放课程中开发过的作业jar存放的目录
[hadoop@hadoop000 ~]$ mkdir shell      存放课程中相关的脚本
[hadoop@hadoop000 ~]$ mkdir maven_resp 存放课程中使用到的maven依赖包存放的目录
  1. 补充
    • 切换hadoop到root用户:[hadoop@hadoop000 ~]$ sudo -i
    • 切换root到hadoop用户:[root@hadoop000 ~]# su hadoop 【注意要配置sudo权限】
    • 建议配置阿里云的yum镜像

三、Hadoop环境搭建

1). Hadoop使用版本

后缀要保证一致,比如使用hadoop-2.6.0-cdh5.15.1,那么其他的框架等也需要使用-cdh5.15.1*

  1. 使用的Hadoop相关版本:CDH
  2. CDH相关软件包下载地址
  3. Hadoop使用版本:hadoop-2.6.0-cdh5.15.1
    Linux下载:(建议下载到本地然后上传到服务器,尽量多加载下页面然后Ctrl+F进行搜索hadoop-2.6.0-cdh5.15.1.tar.gz)
sudo wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1.tar.gz
  1. Hive使用版本:hive-1.1.0-cdh5.15.1 (参照上述下载方式)

2).学习注意事项

Hadoop/Hive/Spark相关框架的学习:

  1. 使用单机版足够
    • 如果使用集群学习会导致:从入门到放弃
  2. 使用Linux/Mac学习进行环境搭建
    • 一定不要使用Windows搭建Hadoop环境
    • 所以Linux基础是要会的

3). Hadoop安装前置要求

参见官网

  1. Java版本要求1.8+
  2. 必须安装ssh(集群节点通信,而且还需要配置公钥与私钥)

四、安装Java

  1. 拷贝本地软件包到服务器:(也可以使用FileZilla/MobaXterm等工具上传)
scp jdk-8u91-linux-x64.tar.gz hadoop@192.168.199.233:~/software/
  1. 解压jdk到~/app/:
tar -zvxf jdk-8u91-linux-x64.tar.gz -C ~/app/
  1. 把jdk配置系统环境变量中
    • vim文件:~/.bash_profile
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
  1. 使得配置修改生效:
source .bash_profile
# 验证:
java -version
echo $JAVA_HOME

如果有其他终端在配置文件更改之前启动,也需要执行source命令才能生效

五、安装ssh无密码登陆

官网介绍要配置ssh; 方便主从节点通信;进程之间不用输密码

# 1. 切换到 `/home/hadoop/`目录下
cd /home/hadoop/

# 2. 生成公钥密钥; 一路回车操作
ssh-keygen -t rsa 

# 3. 查看 
cd ~/.ssh
[hadoop@hadoop000 .ssh]$ ll
总用量 12
-rw------- 1 hadoop hadoop 1679 10月 15 02:54 id_rsa  私钥
-rw-r--r-- 1 hadoop hadoop  398 10月 15 02:54 id_rsa.pub 公钥
-rw-r--r-- 1 hadoop hadoop  358 10月 15 02:54 known_hosts

# 4. 配置公钥
cat id_rsa.pub >> authorized_keys

# 5. 修改权限
chmod 600 authorized_keys

六、Hadoop(HDFS)安装

1). 解压安装配置

  1. 下载解压:~/app(参考配置Java)
# hadoop软件包常见目录说明
bin:hadoop客户端名单
etc/hadoop:hadoop相关的配置文件存放目录
sbin:启动hadoop相关进程的脚本
share:常用例子
  1. 添加HADOOP_HOME/bin到系统环境变量 ~/.bash_profile (参考配置Java)
export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.15.1
export PATH=$HADOOP_HOME/bin:$PATH
  1. 生效验证
# 使得配置修改生效:
source .bash_profile

# 验证:
hadoop version
echo $HADOOP_HOME

2). 修改配置文件

  1. 切换目录
cd /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop
  1. hadoop-env.sh添加内容
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_191
  1. core-site.xml (添加到根标签中)
<property>
    <name>fs.defaultFS</name> <!-- 默认文件系统 -->
    <value>hdfs://hadoop000:8020</value> <!-- 暴露的服务端口 -->
</property>
  1. hdfs-site.xml (添加到根标签中)
<property>
    <name>dfs.replication</name>
    <value>1</value>  <!-- 副本系数 -->
</property>

<property>
    <name>hadoop.tmp.dir</name> <!-- 文件系统的目录: -->
    <value>/home/hadoop/app/tmp</value> 
    <!-- 数据(默认是在/tmp下,但是系统每次重启都会清空该文件夹);
    所以要配置在自定义的环境;数据将存放到此文件夹下 -->
</property>
  1. slaves 修改内容为
hadoop000

3). 启动HDFS:

  1. 第一次执行的时候一定要格式化HDFS文件系统,不要重复执行(否则会格式化数据)
hdfs namenode -format
  1. 启动集群:
./$HADOOP_HOME/sbin/start-dfs.sh

# $HADOOP_HOME的配置见上文描述,也可以直接到目录下启动
  1. 验证: 必须启动如下3个进程
[hadoop@hadoop000 sbin]$ jps
60002 DataNode
60171 SecondaryNameNode
59870 NameNode

util.NativeCodeLoader(压缩相关)默认是没有配置的,所以不会启动如果有进程没有启动;在
如果发现有进程没有启动,查看$HADOOP_HOME/logs/hadoop-hadoop-进程名.log信息

  1. 验证2: 查看服务浏览器访问端口50070,注意关注Live Nodes信息,表示目前活跃的节点数
http://192.168.10.188:50070
  • 如果发现jps ok,但是浏览器不OK? 十有八九是防火墙问题
# 查看防火墙状态:
sudo firewall-cmd --state

# 关闭防火墙: 
sudo systemctl stop firewalld.service

# 禁止防火墙开机启动:
sudo firewall-cmd --state
chkconfig --list | grep firewalld
systemctl list-unit-files | grep firewalld
systemctl disable firewalld
systemctl list-unit-files | grep firewalld

4). 停止HDFS服务

  1. 切换到/$HADOOP_HOME/sbin/目录下
./stop-dfs.sh
  1. 注意:start/stop-dfs.shhadoop-daemons.sh的关系
start-dfs.sh = 
               hadoop-daemons.sh start namenode
               hadoop-daemons.sh start datanode
               hadoop-daemons.sh start secondarynamenode
stop-dfs.sh = 
               同理....

七、【★★★★★】HDFS命令行操作

和Linux Shell命令相似,shell-like!

详细参考官网

命令为/$HADOOP_HOME/bin/hadoop;当然配置了环境变量可以直接使用;

1). 常见命令格式

文件系统的操作,见名知意

hadoop fs [generic options]
    [-appendToFile <localsrc> ... <dst>]
    [-cat [-ignoreCrc] <src> ...]
    [-chgrp [-R] GROUP PATH...]
    [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
    [-chown [-R] [OWNER][:[GROUP]] PATH...]
    [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
    [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-count [-q] [-h] [-v] [-x] <path> ...]
    [-cp [-f] [-p | -p[topax]] <src> ... <dst>]
    [-df [-h] [<path> ...]]
    [-du [-s] [-h] [-x] <path> ...]
    [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-getmerge [-nl] <src> <localdst>]
    [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
    [-mkdir [-p] <path> ...]
    [-moveFromLocal <localsrc> ... <dst>]
    [-moveToLocal <src> <localdst>]
    [-mv <src> ... <dst>]
    [-put [-f] [-p] [-l] <localsrc> ... <dst>]
    [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
    [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
    [-text [-ignoreCrc] <src> ...]

2). hadoop常用命令:

hadoop fs -ls /
hadoop fs -ls -R /  递归展示
hadoop fs -put
hadoop fs -copyFromLocal
hadoop fs -moveFromLocal
hadoop fs -cat
hadoop fs -text
hadoop fs -get
hadoop fs -mkdir 
hadoop fs -mv  移动/改名
hadoop fs -getmerge
hadoop fs -rm
hadoop fs -rmdir
hadoop fs -rm -r 递归删除

3). HDFS存储扩展:

  1. put原理:将文件上传切块(1...n block)存放在不同的节点上
  2. get原理: 去nn(NameNode)上查找这个file对应的元数据信息,合并文件并下载
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • 翻译: http://hadoop.apache.org/docs/stable/hadoop-project-d...
    金刚_30bf阅读 488评论 0 0
  • HDFS的设计目标 通过上一篇文章的介绍我们已经了解到HDFS到底是怎样的东西,以及它是怎样通过多副本机制来提供高...
    陌上疏影凉阅读 1,430评论 0 3
  • HDFS入门 hadoop架构 Hadoop 1.0中的资源管理方案 Hadoop 1.0指的是版本为Apache...
    依天立业阅读 1,040评论 0 1
  • 小年 /小聪 供桌上的馒头上的半颗枣 镶着我目光的贪婪 一根根闪着光的灶糖 发酵了多少岁月的滋味 饭前的二踢脚 叮...
    令狐小聪阅读 218评论 2 0
  • 感谢您的如期而至 今天是我日更第十五天 如果我没参加简书的百天日更,我想今天这篇会是我的完结篇,或许也没有那么快完...
    谭晓熹阅读 539评论 0 0