问题一:Hadoop版本过高
java
卸载Hadoop3.2.0 我改安装了Hadoop 2.7.7数据库
若是没有权限下载。能够采用以下方式:分布式
卸载完成之后返回原目录便可oop
后面的jdk卸载也能够采用这种方式。spa
按照教程从新安装http://dblab.xmu.edu.cn/blog/install-hadoop/.net
因为后期须要安装HBASE 因此Hadoop安装版本选择问题参考以下:命令行
而后设计
执行这一步时或者某些会出现各类警告,这个是因为以前安装的jdk版本太高形成的 卸载jdk 改安装jdk1.8.03d
问题二:jdk版本太高code
按照上述方式,卸载jdk
而后配置环境变量
而后可能会出现JAVA_HOME is not set and could not be found 相似于这种java_home找不到这种错误,或者找不到default-java等修改一下hadoop-env.sh文件改一下jdk路径便可,参考:https://blog.csdn.net/dianzishijian/article/details/52094569
运行MapReduce 项目实例的时候 可能会出现
解决参考教程:https://blog.csdn.net/jack85986370/article/details/51902871
启动Hadoop:./sbin/start-dfs.sh
关闭Hadoop:./sbin/stop-dfs.sh
运行 Hadoop 程序时,为了防止覆盖结果,程序指定的输出目录(如 output)不能存在,不然会提示错误,所以运行前须要先删除输出目录。
./bin/hdfs dfs -rm -r output # 删除 output 文件夹
或者添加以下代码 在程序中(能在每次运行时自动删除输出目录,避免繁琐的命令行操做)
分布式文件系统HDFS:
1.为了解决海量数据的分布式存储的问题
2.知足大规模数据的批量处理需求,不会去访问一块一起的数据
3.实时性不高
4.不支持多用户写入及任意修改文件,只容许追加数据,不容许修改
HDFS相关概念
1.块:HDFS的一个快要比普通的一个快大不少(支持面向大规模数据存储,下降分布式节点的寻址开销)-------->支持大规模文件存储,简化系统设计,适合数据备份
2.名称节点(主节点,记录数据库存储位置信息,数据目录),数据节点(存储实际数据,每一个数据节点上的数据是被保存到数据节点本地的Linux文件系统中去)----->两大组件
注意,在FsImage文件中是没有具体记录块在哪一个数据节点存储的
HDFS启动:先从底层读出FsImage,再读出EditLog,而后它们在内存中进行合并操做,合并后获得一个新的FsImage,删掉旧的FsImage,再生成一个新的EditLog,系统开始运行
第二名称节点:1.名称节点的冷备份,2.对EditLog的处理(帮助解决EditLog不断增大的问题)