Hadoop

Hadoop

Hadoop 安装 & 配置

Hadoop & Yarn安装步骤

参考: Apache Hadoop 2.9.2 – Hadoop Cluster Setup

  1. /etc/hosts, ssh登录 // 使slave可以ssh到master
    • /etc/hosts: 所有slave可互相ping hostname
    • authorized_keys : master可以ssh任意slave
  2. hadoop配置文件
    • hadoop-env.sh : HADOOP_CONF_DIR 指定加载哪个目录下的配置文件
    • slaves: 只有namenode需配置
    • core-site.xml:(https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml)
      • fs.defaultFS : hdfs://namenode:9000 ## hdfs文件端口
      • hadoop.tmp.dir : /opt/data/hadoop/tmp 其它目录会基于此路径
    • hdfs-site.xml:(https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml)
      • dfs.namenode.secondary.http-address : 第二NameNode web管理端口
      • dfs.replication : 3 ## 数据需要备份的数量, 默认是3, 如果此数大于集群的机器数会出错
      • dfs.namenode.name.dir : /opt/data/hadoop/namenode ## NameNode持久存储名字空间及事务日志的本地文件系统路径
      • dfs.datanode.data.dir : /opt/data/hadoop/datenode ## DataNode存放块数据的本地文件系统路径
      • dfs.namenode.http-address : namenode:50070 ## 浏览器可访问管理页面
      • dfs.webhdfs.enabled : 开启WebHDFS (REST API)功能
    • mapred-site.xml:
      • mapreduce.framework.name: yarn
      • mapreduce.jobhistory.address: 10020
      • mapreduce.jobhistory.webapp.address: 19888
    • yarn-site.xml
      • yarn.resourcemanager.webapp.address: 8088 ## yarn框架中各个 task 的资源调度及运行状况通过通过该web界面访问
  3. 格式化namenode: hdfs namenode -format
  4. 启动HDFS NameNode: sbin/hadoop-daemon.sh start namenode
  5. 启动HDFS DateNode: sbin/hadoop-daemons.sh start datanode
    • 或者在namenode上直接一个脚本启动: sbin/start-dfs.sh namenode和datanode的所有hdfs
  6. 启动yarn: sbin/start-yarn.sh脚本一次启动ResourceManager和NodeManager, 如果要分别启动:
    • yarn-daemon.sh --config /opt/conf/hadoop start nodemanager
    • yarn-daemon.sh --config /opt/conf/hadoop start resourcemanager
  7. 查看集群状态: bin/hdfs dfsadmin -report
  8. 测试hdfs写: echo "hello world" | hadoop fs -put - /dir/hadoop/hello_world.txt && hadoop fs -cat /dir/hadoop/hello_world.txt
  9. 一些web ui:

一些重要参数

@TODO

客户端 API & 命令行

Hadoop命令

  • 参考: Apache Hadoop 2.7.3 – Hadoop Commands Guide
  • hadoop dfs: 针对dfs的命令, 已经Deprecated, 推荐使用hdfs dfs
  • hadoop fs: 本地与dfs交互的命令
    • hadoop fs -cat file:///file3 /user/hadoop/file4
    • hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
    • hadoop dfs -df /user/hadoop/dir1
    • hadoop fs -du -h /user/hadoop/dir1 hdfs://nn.example.com/user/hadoop/dir1
    • hadoop fs -put
  • hadoop version
  • hadoop jar [mainClass] arg

HDFS命令

Yarn命令

* 参考: Apache Hadoop 2.7.3 – YARN Commands

HDFS文件系统解析

NameNode的FSImage和Edit log工作方式: FSImage中保存着某一时刻的HDFS文件目录树、元数据和数据块索引等信息,而后续的对这信息系的修改则保存在Edit log中
Secondary NameNode和NameNode的区别在于他不接受或记录HDFS的任何实时变化,只是根据集群配置的时间间隔不停的获取HDFS的某一个时间节点的FSImage和编辑日志,合并得到一个新的命名空间镜像FSImage,然后该镜像会上传到NameNode,替换原有的镜像文件,并清空编辑日志。
DataNode: 客户端操作文件块Block时,先由NameNode节点告知客户端诗句块所在的节点的位置,然后客户端直接与DataNode节点通信,处理与数据块对应的Linux上的本地文件。