Hadoop 安装 & 配置
Hadoop & Yarn安装步骤
参考: Apache Hadoop 2.9.2 – Hadoop Cluster Setup
- /etc/hosts, ssh登录 // 使slave可以ssh到master
- /etc/hosts: 所有slave可互相ping hostname
- authorized_keys : master可以ssh任意slave
- 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界面访问
- hadoop-env.sh :
- 格式化namenode:
hdfs namenode -format
- 启动HDFS NameNode:
sbin/hadoop-daemon.sh start namenode
- 启动HDFS DateNode:
sbin/hadoop-daemons.sh start datanode
- 或者在namenode上直接一个脚本启动:
sbin/start-dfs.sh
namenode和datanode的所有hdfs
- 或者在namenode上直接一个脚本启动:
- 启动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
- 查看集群状态:
bin/hdfs dfsadmin -report
- 测试hdfs写:
echo "hello world" | hadoop fs -put - /dir/hadoop/hello_world.txt && hadoop fs -cat /dir/hadoop/hello_world.txt
- 一些web ui:
- 查看nameNode: http://namenode:50070/
- 查看yarn resourcemanager: http://namenode:8088/
- MapReduce JobHistory: http://namenode:19888
一些重要参数
@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上的本地文件。