一、Java环境变量配置
jdk8-x64:Java Downloads | Oracle
二、hadoop环境变量配置
hadoop-2.7.7.tar.gz:https://mirrors.aliyun.com/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
三、scala环境变量配置
scala-2.12.11:https://downloads.lightbend.com/scala/2.12.11/scala-2.12.11.msi
四、spark环境变量配置
spark-2.4.0-bin-hadoop2.7.tgz:https://mirrors.huaweicloud.com/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
五、hdfs配置文件配置
1、配置 hadoop-env.cmd 文件里的 JAVA_HOME,因为路径不能出现空格,Program Files 用 PROGRA~1 代替
::set JAVA_HOME=%JAVA_HOME%
set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_111
2、修改 \etc\hadoop 下的 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:\Hadoop\HDFS\hadoop-2.7.7\logs\userlogs, 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 \tmp\hadoop-com\dfs\data :
- java.io.IOException: (null) entry in command string: null chmod 0700 C:\tmp\hadoop-com\dfs\data
- 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 \tmp\hadoop-com\dfs\data
- 输入 chmod 0700 C:\tmp\hadoop-com\dfs\data 命令为空,需要手动创建文件夹或者配置dfs\data
- 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的官方文档查看
Apache Hadoop 2.7.7 – Hadoop: Setting up a Single Node Cluster.
7、Configuration(配置文件)
etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
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:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(2)etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(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集群版配置: Apache Hadoop 2.7.7 –
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hdfs文件默认的备份数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- NameNode的目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>../dir/namenode</value>
</property>
<!-- DataNode的目录-->
<property>
<name>dfs.datanode.data.dir</name>
<value>../dir/datanode</value>
</property>
</configuration>
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 目录下
进入 \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
- 下载完之后,先将原来的 /lib 目录改为 /lib .template ,然后再把下载的 lib 库解压到 hadoop 根目录下
- 将 /lib目录下的 hadoop.dll 文件拷贝到 C:\windows\System32 下
- 修改目录名称为 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 命令,集群默认没有目录和文件,这里创建几个目录
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/