暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习 Unable to load native-hadoop library for your platform

  问题一:Hadoop版本太高

卸载Hadoop3.2.0 我改安装了Hadoop 2.7.7

如果没有权限下载。可以采用如下方式:

暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

卸载完成以后返回原目录即可

暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

后面的jdk卸载也可以采用这种方式。

按照教程重新安装http://dblab.xmu.edu.cn/blog/install-hadoop/

由于后期需要安装HBASE 所以Hadoop安装版本选择问题参考如下:

 暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

 然后

暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

执行这一步时或者某些会出现各种警告,这个是由于之前安装的jdk版本过高造成的 卸载jdk 改安装jdk1.8.0

  问题二:jdk版本过高

按照上述方式,卸载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 文件夹

或者添加如下代码 在程序中(能在每次运行时自动删除输出目录,避免繁琐的命令行操作)

  1. Configuration conf = new Configuration();
  2. Job job = new Job(conf);
  3.  
  4. /* 删除输出目录 */
  5. Path outputPath = new Path(args[1]);
  6. outputPath.getFileSystem(conf).delete(outputPath, true);

 暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

  1. // String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
  2. String[] otherArgs=new String[]{"input","output"}; /* 直接设置输入参数 */

   分布式文件系统HDFS:

1.为了解决海量数据的分布式存储的问题

2.满足大规模数据的批量处理需求,不会去访问一块一块儿的数据

3.实时性不高

4.不支持多用户写入及任意修改文件,只允许追加数据,不允许修改

  HDFS相关概念

1.块:HDFS的一个快要比普通的一个快大很多(支持面向大规模数据存储,降低分布式节点的寻址开销)-------->支持大规模文件存储,简化系统设计,适合数据备份

2.名称节点(主节点,记录数据库存储位置信息,数据目录),数据节点(存储实际数据,每个数据节点上的数据是被保存到数据节点本地的Linux文件系统中去)----->两大组件

暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

 注意,在FsImage文件中是没有具体记录块在哪个数据节点存储的暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform

 HDFS启动:先从底层读出FsImage,再读出EditLog,然后它们在内存中进行合并操作,合并后得到一个新的FsImage,删掉旧的FsImage,再生成一个新的EditLog,系统开始运行

第二名称节点:1.名称节点的冷备份,2.对EditLog的处理(帮助解决EditLog不断增大的问题)暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习
Unable to load native-hadoop library for your platform