一、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 Files 用 PROGRA~1 代替
代码语言:javascript复制::set JAVA_HOME=%JAVA_HOME%
set JAVA_HOME=C:PROGRA~1Javajdk1.8.0_111
2、修改 etchadoop 下的 hadoop-env.cmd 文件
3、直接启动,发现报错
4、将报错的关键信息记录下来
- 20/03/17 18:23:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
- 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.
- 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.
- 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
- 20/03/17 18:23:29 ERROR namenode.NameNode: Failed to start namenode.
- java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.
- 20/03/17 18:23:38 WARN datanode.DataNode: Invalid dfs.datanode.data.dir tmphadoop-comdfsdata :
- java.io.IOException: (null) entry in command string: null chmod 0700 C:tmphadoop-comdfsdata
- java.io.IOException: All directories in dfs.datanode.data.dir are invalid: "/C:/tmp/hadoop-com/dfs/data"
5、问题描述与解决办法
问题描述:
- 无法加载hadoop library下的jar到Windows平台
- 无法根据命令创建目录 /tmp/hadoop-com/nm-local-dir
- 无法根据命令创建目录 D:/Hadoop/HDFS/hadoop-2.7.7/logs/userlogs
- 初始化的磁盘报错 local-dirs、log-dirs
- namenode启动失败
- namenode url 参数错误,fs.defaultFS
- 无效的配置 dfs.datanode.data.dir tmphadoop-comdfsdata
- 输入 chmod 0700 C:tmphadoop-comdfsdata 命令为空,需要手动创建文件夹或者配置dfsdata
- DataNode的目录无效:dfs.datanode.data.dir are invalid: "/C:/tmp/hadoop-com/dfs/data"
解决办法:
- 上github上下载winutils.exe,放到hadoop/bin目录下 https://github.com/steveloughran/winutils
- 配置 /tmp/hadoop-com/nm-local-dir
- 配置 /logs/userlogs
- 手动创建 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的启动步骤
- cmd 进入 /bin 目录下,执行命令:hdfs namenode -format
- 再进入/sbin目录下,启动hdfs:start-dfs.cmd
- 浏览器打开网站:http://localhost:50070/
- /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
- 下载完之后,先将原来的 /lib 目录改为 /lib .template ,然后再把下载的 lib 库解压到 hadoop 根目录下
- 将 /lib目录下的 hadoop.dll 文件拷贝到 C:windowsSystem32 下
- 修改目录名称为 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/