气象数据收集,自行百度吧
MapReduce 的优势在于处理大规模数据集
win10 安装hadoop 3.1.2
win10 安装hadoop 3.1.2
hadoop Linux安装配置(ubuntu 18.04 hadoop3.1.2)
- 解压 tar.gz
- 配置JAVA_HOME
- 配置HADOOP_HOME ,PATH等
tar -zxvf hadoop-3.1.2.tar
vim .bashrc
export JAVA_HOME
export PATH=$PATH:${JAVA_HOME}/bin
export HADOOP_HOME
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
- hdoop version 验证是否成功
- 三种模式
- 独立(或本地)模式,无需运行任何守护进程,所有程序都在同一个JVM上执行。适合测试和调试MapReduce 程序
- 伪分布式,运行在本地机器上,模拟一个小规模的集群
- 全分布式
- 修改配置文件,参照代码 -- hdoopconfig
- 配置ssh
ssh-keygen -t rsa -p '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost #测试
- 格式化HDFS hdfs namenode -format
- 启动和终止守护进程
- start-dfs.sh
- start-yarn.sh
- mr-jobhistory-daemon.sh start historyserver
- 终止服务
- mr-jobhistory-daemon.sh stop historyserver
- stop-yarn.sh
- stop-dfs.sh
- 创建用户目录
- hadoop fs -mkdir -p /user/$USER
api 版本差异
- 新api 位于 org.apache.hadoop.mapreduce
- 新api 大量使用了 Context
- 新api 通过Job来完成作业控制
示例代码 github
hadoop 权威指代码
横向扩展
- 数据流
- 输入数据 MapReduce 程序 配置信息
- Hadoop 将作业分成若干个任务来执行,并通过 YARN进行调度。如果一个任务失败,它将在另一个不同的节点上自动重新调度运行
- Hadoop将MapReduce 的输入数据划分成等长的小数据块,成为输入分片。每个分片构建一个map任务
- 分片大小要合适,一个合理分片大小趋向于HDFS一个块的大小默认128MB
- Hadoop 在存储有输入数据(HDFS中的数据)的节点上运行map任务,可获得最佳性能,因为不需要使用带宽资源
- map任务将输出写入本地硬盘而非HDFS,因为是中间结果
- 混洗?
- combiner 函数
- combiner 函数输出作为reduce 函数的输入,可以减少map和reduce任务之间的数据传输
- combiner的规则制约着可用的函数类型
- 不能取代reduce ,例如求平均值得程序就不能用combiner
- hadoop Streaming