前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >win10搭建hadoop和spark

win10搭建hadoop和spark

作者头像
静谧星空TEL
发布2021-04-27 11:32:38
1.1K0
发布2021-04-27 11:32:38
举报
文章被收录于专栏:云计算与大数据技术

一、Java环境变量配置

jdk8-x64

二、hadoop环境变量配置

hadoop-2.7.7.tar.gz

三、scala环境变量配置

scala-2.12.11

四、spark环境变量配置

spark-2.4.0-bin-hadoop2.7.tgz

五、hdfs配置文件配置

1、配置 hadoop-env.cmd 文件里的 JAVA_HOME,因为路径不能出现空格,Program FilesPROGRA~1 代替

代码语言:javascript
复制
::set JAVA_HOME=%JAVA_HOME%
set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_111

2、修改 \etc\hadoop 下的 hadoop-env.cmd 文件

3、直接启动,发现报错

4、将报错的关键信息记录下来

  1. 20/03/17 18:23:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  2. 20/03/17 18:23:31 WARN nodemanager.DirectoryCollection: Unable to create directory /tmp/hadoop-com/nm-local-dir error (null) entry in command string: null chmod 0755 C:\tmp, removing from the list of valid directories.
  3. 20/03/17 18:23:31 WARN nodemanager.DirectoryCollection: Unable to create directory D:/Hadoop/HDFS/hadoop-2.7.7/logs/userlogs error (null) entry in command string: null chmod 0755 D:\Hadoop\HDFS\hadoop-2.7.7\logs\userlogs, removing from the list of valid directories.
  4. 20/03/17 18:23:31 ERROR nodemanager.LocalDirsHandlerService: Most of the disks failed. 1/1 local-dirs are bad: /tmp/hadoop-com/nm-local-dir; 1/1 log-dirs are bad: D:/Hadoop/HDFS/hadoop-2.7.7/logs/userlogs
  5. 20/03/17 18:23:29 ERROR namenode.NameNode: Failed to start namenode.
  6. java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.
  7. 20/03/17 18:23:38 WARN datanode.DataNode: Invalid dfs.datanode.data.dir \tmp\hadoop-com\dfs\data :
  8. java.io.IOException: (null) entry in command string: null chmod 0700 C:\tmp\hadoop-com\dfs\data
  9. java.io.IOException: All directories in dfs.datanode.data.dir are invalid: "/C:/tmp/hadoop-com/dfs/data"

5、问题描述与解决办法

问题描述:

  1. 无法加载hadoop library下的jar到Windows平台
  2. 无法根据命令创建目录 /tmp/hadoop-com/nm-local-dir
  3. 无法根据命令创建目录 D:/Hadoop/HDFS/hadoop-2.7.7/logs/userlogs
  4. 初始化的磁盘报错 local-dirs、log-dirs
  5. namenode启动失败
  6. namenode url 参数错误,fs.defaultFS
  7. 无效的配置 dfs.datanode.data.dir \tmp\hadoop-com\dfs\data
  8. 输入 chmod 0700 C:\tmp\hadoop-com\dfs\data 命令为空,需要手动创建文件夹或者配置dfs\data
  9. DataNode的目录无效:dfs.datanode.data.dir are invalid: "/C:/tmp/hadoop-com/dfs/data"

解决办法:

  1. 上github上下载winutils.exe,放到hadoop/bin目录下 https://github.com/steveloughran/winutils
  2. 配置 /tmp/hadoop-com/nm-local-dir
  3. 配置 /logs/userlogs
  4. 手动创建 local-dirs、log-dirs 目录,或者配置 local-dirs、log-dirs

6、去hadoop2.7.7的官方文档查看

http://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-common/SingleCluster.html

7、Configuration(配置文件)

etc/hadoop/core-site.xml

代码语言:javascript
复制
        fs.defaultFS
        hdfs://localhost:9000

etc/hadoop/hdfs-site.xml

代码语言:javascript
复制
        dfs.replication
        1

8、Execution(执行操作)

(1)格式化hdfs硬盘 Format the filesystem: $ bin/hdfs namenode -format 

         Windows下是执行cmd命令,cd 到 hadoop 安装目录的 bin 目录下执行 hdfs namenode -format 命令

然后发现错误

解决办法:https://github.com/steveloughran/winutils 上GitHub上下载 winutils-master.zip 文件,

然后解压文件找到 hadoop 对应版本的 winutils.exe 文件,放到 /bin 目录下

然后放到 /bin 目录下,重新执行 hdfs namenode -format 命令,发现hadoop安装目录的磁盘下

tmp\hadoop-com\dfs\name\current 目录下创建了hdfs的原数据信息,cmd窗口也没报错,说明格式化成功

(2)Start NameNode daemon and DataNode daemon: $ sbin/start-dfs.sh

        Windows下是执行cmd命令,cd 到 hadoop 安装目录的 sbin 目录下执行 start-dfs.cmd 命令

        弹出了两个窗口,一个 NameNode 和一个 DataNode  ,同时也报了一个错误,往下分析

问题描述: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 问题分析: 原数据信息已经在本地 D 盘初始化了,但是启动hdfs的时候读取的却是C盘下的路径 解决办法: 1、把hadoop的安装目录移动到 C盘重新执行 2、找配置文件,设置 hdfs读取的路径为安装路径或者写成绝对路径

(3)Browse the web interface for the NameNode; by default it is available at: NameNode - http://localhost:50070/

9、YARN on a Single Node

(1)etc/hadoop/mapred-site.xml:

代码语言:javascript
复制
        mapreduce.framework.name
        yarn

(2)etc/hadoop/yarn-site.xml:

代码语言:javascript
复制
        yarn.nodemanager.aux-services
        mapreduce_shuffle

(3)Start ResourceManager daemon and NodeManager daemon: $ sbin/start-yarn.sh

         Windows下启动 yarn,执行 /sbin 目录下的 start-yarn.cmd 命令

(4)Run a MapReduce job. stop the daemons with: $ sbin/stop-yarn.sh

         Windows下关闭 yarn,执行 /sbin 目录下的 stop-yarn.cmd 命令

10、根据权威的官方网站可知,namenode和DataNode的原数据目录配置是在 etc/hadoop/hdfs-site.xml 文件里边

       hadoop集群版配置: http://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-common/ClusterSetup.html

代码语言:javascript
复制
        dfs.replication
        1
    
	
    
        dfs.namenode.name.dir
        ../dir/namenode
    
	
    
        dfs.datanode.data.dir
        ../dir/datanode

11、继续hdfs的启动步骤

  1. cmd 进入 /bin 目录下,执行命令:hdfs namenode -format
  2. 再进入/sbin目录下,启动hdfs:start-dfs.cmd
  3. 浏览器打开网站:http://localhost:50070/
  4. /sbin目录下,启动yarn:start-yarn.cmd

执行完 hdfs namenode -format 之后,根据comand info 可以发现,NameNode的目录已经初始化到安装路径的 dir 目录下

 进入 \dir\namenode\current 目录查看,hdfs的NameNode初始化完成

进入/sbin目录下,启动 hdfs:start-dfs.cmd 之后,弹出了NameNode和DataNode窗口,又出现了报错

问题描述: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 问题描述: 无法加载hadoop的本地库到Windows平台,需要在合适的地方编译Java class 问题分析: hadoop 本地库无法被加载,原因是Apache提供的hadoop本地库是32位的, 而在64位的服务器上就会有问题,因此需要自己编译64位的版本。 问题解决: 方法 1 :将 hadoop native library 加到环境变量中,重新执行 start-dfs.cmd 方法 2 :上GitHub:https://github.com/steveloughran/winutils 下载对应的编译版本

方法 1: 将 hadoop 自带的 lib 库加至环境变量后,执行 start-dfs.cmd 发现还是不行

 方法 2 :下载网站给编译好的 lib 库:http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.7.0.tar

  1. 下载完之后,先将原来的 /lib 目录改为 /lib .template ,然后再把下载的 lib 库解压到 hadoop 根目录下
  2. 将 /lib目录下的 hadoop.dll 文件拷贝到 C:\windows\System32 下
  3. 修改目录名称为 native,再次启动 start-dfs.cmd,访问 http://localhost:50070/

12、执行 /sbin/start-yarn.cmd,弹出resourcemanager和nodemanage两个窗口

访问地址:http://localhost:8088/cluster ,Hadoop集群配置成功

13、一键关闭集群执行 /sbin/stop-all..cmd,一键启动hadoop集群点击 /sbin/start-all.cmd

       集群运行之后有四个窗口:NameNode、DataNode、ResourceManage、NodeManager,表明运行成功

hadoop集群信息访问:http://localhost:50070/ hadoop集群job运行访问:http://localhost:8088/

启动之后,可以进入 cmd 执行 hadoop shell 命令,集群默认没有目录和文件,这里创建几个目录

代码语言:javascript
复制
hadoop version
hadoop fs -ls /
hadoop fs -mkdir /hive
hadoop fs -mkdir /hbase
hadoop fs -mkdir /home
hadoop fs -mkdir /tmp
hadoop fs -mkdir /usr/local

访问 hdfs web http://localhost:50070/

六、启动spark

1、启动spark \Spark\spark-2.4.2-bin-hadoop2.7\bin\spark-shell.cmd

2、访问spark UI:http://127.0.0.1:4040/jobs/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Java环境变量配置
  • 二、hadoop环境变量配置
  • 三、scala环境变量配置
  • 四、spark环境变量配置
  • 五、hdfs配置文件配置
  • 六、启动spark
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档