win10搭建hadoop和spark

2021-04-27 11:32:38 浏览数 (1)

一、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~1Javajdk1.8.0_111

2、修改 etchadoop 下的 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:HadoopHDFShadoop-2.7.7logsuserlogs, 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 tmphadoop-comdfsdata :
  8. java.io.IOException: (null) entry in command string: null chmod 0700 C:tmphadoop-comdfsdata
  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 tmphadoop-comdfsdata
  8. 输入 chmod 0700 C:tmphadoop-comdfsdata 命令为空,需要手动创建文件夹或者配置dfsdata
  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安装目录的磁盘下

tmphadoop-comdfsnamecurrent 目录下创建了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 目录下

 进入 dirnamenodecurrent 目录查看,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:windowsSystem32 下
  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 Sparkspark-2.4.2-bin-hadoop2.7binspark-shell.cmd

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

0 人点赞