安装参照的这篇博客:https://blog.csdn.net/winxblast/article/details/75000528
监控作业状态记录没有,参见:https://blog.csdn.net/tangtang5156/article/details/40867759
安装ssh服务:sudo apt-get install openssh-server
每次得重启下ssh服务:sudo service ssh restart
然后用SSH软件连接WSL。
/opt/hadoop-2.7.4/sbin/start-all.sh 启动Hadoop。
windows的磁盘挂载在mnt下
查询HDFS根目录:hdfs dfs -ls /
创建新文件夹input:hdfs dfs -mkdir /user/root/input
上传文件夹到HDFS:hdfs dfs -put ./input /user/root/
export HADOOP_CLASSPATH=ch02-mr-intro.jar
hadoop MaxTemperature input/ncdc/sample.txt output
查看结果:hdfs dfs -cat /user/root/output/part-r-00000
运行程序也可以 :
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-*-tests.jar minicluster(前提是没有第三方依赖)
笔记部分
MapReduce
分为两阶段,每阶段都以键-值对作为输入和输出。map函数是一个数据准备阶段、也能处理缺失值,reduce是数据处理阶段。
org.apache.hadoop.io包中有hadoop的数据类型,可见:https://www.cnblogs.com/anny-1980/articles/2608097.html
输入数据会分片(split),一般合理的分片大小趋于HDFS的一个块大小,默认是128MB,map任务将输出写入本地硬盘,因为是中间结果,reduce输出才写在HDFS上。
多个reduce任务会shuffle
combiner函数属于优化方案,在map和reduce之间,能帮助减少数据传输量。
HDFS
流式数据访问——一次写入、多次读取是最高效的访问模式。
HDFS是为高吞吐量应用优化的,低延迟的访问需求用HBase更好。
文件只支持单个写入者,且写操作总是以“只添加”的方式在文件末尾写数据。
数据块默认128MB,块比较大是为了最小化寻址开销。
对分布式文件系统中的块进行抽象的好处:1、一个文件的大小可以大于网络中任一个磁盘的容量。2、简化了存储子系统的设计。
高可用性
活动-备用namenode
ZooKeeper来确保有且仅有一个namenode,心跳机制