Hadoop基础

1. Hadoop

  1. hadoop是一个分布式的、开源的、高可靠的、可扩展的软件框架。

    分布式:

​ 【GFS(存储),MapReduce(计算)两篇论文】【bigtable(大表)】

  1. hadoop组成【2.7.3版本】

    1. Hadoop Common

    2. Hadoop Distributed Files System(HDFS)

      【默认端口号:8020(1.0则是9000)】

      【外部访问HDFS的端口号是50070,数据传输的端口号是50075】

      【在虚拟机环境下部署,物理机访问linux下HDFS,必须开放50070和50075端口】

    3. Hadoop YARN【默认端口:8088】

    4. Hadoop MapReduce

  2. hadoop上层应用组件

    1. Ambari:web端监控hadoop集群的工具
    2. Avro:序列化数据系统
    3. HBase:高可靠的、数据库
    4. Hive:数据仓库
    5. Spark:快速的、通用的计算引擎
    6. Zookeeper:高可用的平台,在分布式之间协调
    7. 【Hadoop Ozone】:关系型数据存储【3.0】
    8. 【Hadoop Submarine】:机器学习【3.0】

hadoop安装部署

  1. 搭建环境

    • centos6.8
      • 关闭防火墙
      • 设置静态IP
      • 修改主机名及hosts文件
    • hadoop2.7.3
    • jdk1.8
    • 采用自建用户(hadoop/8426)
    • 安装目录:/home/hadoop/soft/hadoop
  2. hadoop集群搭建的三种模式

    1. Local (Standalone)Mode:【本地模式】

      [hadoop被配置作为单个Java进程以非分布式模式进行。主要用于debug]

    2. Pseudo-Distributed Mode:【伪分布模式】

      [hadoop伪分布模式运行在单节点上,每个hadoop守护进程占用单独的Java进程]

    3. Fully-Distributed Mode:【完全分布模式】


hadoop配置文件位置(/home/hadoop/soft/etc/hadoop)

  1. core-site.xml(Common)

    【hadoop-2.7.3.tar.gz/share/hadoop/common/hadoop-common-2.7.3.jar】

  2. hdfs-site.xml(HDFS)

    【hadoop-2.7.3.tar.gz/share/hadoop/hdfs/hadoop-hdfs-2.7.3.jar】

  3. yarn-site.xml(YARN)

    【hadoop-2.7.3.tar.gz/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.3.jar】

  4. mapred-site.xml(MapReduce)

    【hadoop-2.7.3.tar.gz/share/hadoop/yarn/hadoop-yarn-common-2.7.3.jar】

  1. 剪切出test包【_test】
  2. 剪切出source包【_sources】
  3. 剪切出config包【_config】
  4. 剩下的是依赖包【_jar】

守护进程

  1. 开启守护进程【启动关闭没有顺序要求】

    $>start-dfs.sh

    • 单独开启守护进程【以当前窗口会话的形式开启】

      $>hdfs namenode【50070端口是namenode的】
      $>hdfs datanode
      $>hdfs secondarynamenode

      【如果默认配置目录$HADDOP_HOME/etc/hadoop不存在】
      【那么开启守护进程时必须指定配置文件目录】
      【$>hdfs --config ~/soft/hadoop/etc/hadoop namenode
      【以~/soft/hadoop/etc/hadoop作为配置文件路径进行启动守护线程】

    【以这种方式启动就可以查看异常的信息】

  • 通过hadoop-deamon.sh单独开启3个守护线程(最常用的方式,启动后将进程挂到后台,不影响其他操作执行)

    $>hadoop-daemon.sh start namenode
    $>hadoop-daemon.sh start datanode
    $>hadoop-daemon.sh start secondarynamenode

  1. 关闭守护进程

    • 整体关闭,调用stop-all.sh

      • $>stop-all.sh(不常用,会将不需要关闭的也关闭)
    • 单独关闭守护进程

      $>hadoop-daemon.sh stop namenode
      $>hadoop-daemon.sh stop datanode
      $>hadoop-daemon.sh stop secondarynamenode

    【start-all.sh = start-dfs.sh + start-yarn.sh】

    【namenode与datanode的Cluster ID不相同,会产生冲突,namenode开启,系统检测到了之后,datanode就会被kill】

    【默认的HDFS存储在/tmp目录下,生产环境下会更换路径】


hadoop默认配置路径

【$HADOOP_HOME/etc/hadoop】

【建议:采用软链接的方式配置hadoop默认路径!】

【因为,再安装完全分布式,或者高可用时,只要修改软链接的指向,就可以很方便指向对应目录】


初识HDFS文件系统

[hadoop@master etc]$ hdfs dfs -ls /
[hadoop@master etc]$ hdfs dfs -mkdir -p /use/mumu
[hadoop@master etc]$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2019-07-29 17:03 /use
[hadoop@master etc]$ hdfs dfs -ls -R /
drwxr-xr-x - hadoop supergroup 0 2019-07-29 17:03 /use
drwxr-xr-x - hadoop supergroup 0 2019-07-29 17:03 /use/mumu
[hadoop@master mumu]$ hdfs dfs -put 1556876534726.jpg /use/mumu
[hadoop@master mumu]$ hdfs dfs -ls /use/mumu
Found 1 items
-rw-r–r-- 1 hadoop supergroup 1884551 2019-07-29 17:05 /use/mumu/1556876534726.jpg
[hadoop@master mumu]$

  • hdfs dfs command
  • hadoop fs command【常用】

HDFS启动加载顺序

【start-dfs.sh】

–> 【hdfs-config.sh】:查找hadoop-config.sh文件,并执行

–> 【hadoop-config.sh】 :设置hadoop默认的参数变量 + 加载JVM + 设置classpath

–> 【hadoop-env.sh】:加载JAVA_HOME,设置JVM参数

[echo “Starting namenode on [$NAMENODES]”]

–> 【hadoop-daemons.sh】:启动守护进程

–> 【slaves.sh】:读取从节点(slaves)的节点信息
–> 【hadoop-daemon.sh】:获取参数,调用HDFS命令执行开启守护进程
–> 【hdfs】:通过command命令检索对应的javaClass对象,然后调用执行
–> 【java.class】:执行main主函数


守护进程开启过程中出现的异常(非法操作导致)

  1. 重复执行<$ hdfs namenode -format>格式化命令

    • 【导致datanode或namenode结点开启异常】
  • 【解决方案:】修改{/tmp/hadoop-hadoop/dfs/name/current/VERSION}文件中的Cluster ID值,重新启动集群就可以了。
    • 原因:由于重新格式化操作,将原有的{/tmp/hadoop-hadoop/dfs/name}目录重新定义
  1. 格式化操作步骤:
    • 删除{/tmp/hadoop-hadoop}目录下的所有内容
    • 执行格式化命令:$>hdfs namenode -format
  2. 如果要保存原有的数据
    • 修改所有的VERSION中的Cluster ID值,和其他属性,都改成一样的就行

修改HDFS默认存储路径

  1. 关闭HDFS环境

  2. 删除原hadoop-hadoop【/tmp/hadoop-hadoop】目录

  3. 修改默认存放数据的地址为

    [src:core-site.xml]

    <property>
    	<name>hadoop.tmp.dir</name>
    	<value>/tmp/hadoop-${user.name}</value>
    	<description>A base for other temporary directories.</description>
    </property>
    

    【这个是设置HDFS存放数据地址的路径:

    【/home/hadoop/tmp/hadoop-username/】

    [dest:$HADOOP_HOME/etc/hadoop/core-site.xml]

  4. 修改默认存放namenode节点数据的地址为

    [src:hdfs-site.xml]

    <property>
    		<name>dfs.namenode.name.dir</name>
    		<value>file://${hadoop.tmp.dir}/dfs/name</value>
    【追加,/home/hadoop/backup/dfs/name】【追加这个是为了备份namenode数据】
    		<description>Determines where on the local filesystem the DFS name node
    should store the name table(fsimage).  If this is a comma-delimited list
    of directories then the name table is replicated in all of the
    directories, for redundancy. </description>
    </property>
    

    【这个才是namenode节点存放数据的路径,这个路径在整个HDFS存放路径下的子路径】

    【/home/hadoop/tmp/hadoop-username/】

    [dest:$HADOOP_HOME/etc/hadoop/hdfs-site.xml]

  5. 修改默认存放datanode节点数据的地址为

    [hdfs-site.xml]

    <property>
    		<name>dfs.datanode.data.dir</name>
    		<value>file://${hadoop.tmp.dir}/dfs/data</value>
    		<description>Determines where on the local filesystem an DFS data node
    should store its blocks.  If this is a comma-delimited
    list of directories, then data will be stored in all named
    directories, typically on different devices. The directories should be tagged
    with corresponding storage types ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for HDFS
    storage policies. The default storage type will be DISK if the directory does
    not have a storage type tagged explicitly. Directories that do not exist will
    be created if local filesystem permission allows.
    		</description>
    </property>
    

    【这个是datanode的存放位置,同namenode】

    [dest:$HADOOP_HOME/etc/hadoop/hdfs-site.xml]

  6. 格式化namenode【$>hdfs namenode -format】【不报错情况下继续】

  7. 开启各个节点【namenode、datanode、secondarynamenode】

  8. 测试节点启动情况【jps】

    【如果节点都开启,则成功。若有节点未开启,则利用hdfs command方式开启并查看异常】


HDFS主从分布

  1. 分布式文件系统采用主Master/从Slaves结构

    【namenode守护进程作为Master节点】:维护HDFS的元数据信息[镜像文件+编辑日志]

    【datanode守护进程作为Slaves节点】:

  2. 参照【官方完档的HDFS Architecture】


面试题:

  1. 在开启start-dfs.sh时,默认给定守护进程的大小是多少?

    【1000M】

  2. hadoop集群的瓶颈是?

    • 网络x
    • 内存x
    • 【存储】
    • 内核x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值