为了便于开发,我在本地Windows系统进行Hadoop搭建。

我使用的版本:hadoop-2.7.0。其他版本也可,搭建流程基本一样,所以参考这个教程一般不会有错。

1、下载安装包和插件

安装包hadoop-2.7.0.tar.gz

必要插件winutils-master

2、解压安装包

使用管理员身份运行cmd,到安装包对应目录下,输入:tar zxvf hadoop-2.7.0.tar.gz

Hadoop安装必须要安装JDK,这里就不赘述

3、配置环境变量

新建HADOOP_HOME,其实与JDK配置过程类似(E:\hadoop是我hadoop-2.7.0存放的位置,具体根据自己存放地址填写):

 系统环境变量path中添加%HADOOP_HOME%\bin:

 对E:\hadoop\hadoop-2.7.0\etc\hadoop\hadoop-env.cmd的JAVA_HOME进行修改,如下:

因为我的JDK在windows的Program Files目录,这里我使用PROGRA~1代替Program Files

JAVA_HOME安装目录不能有空格,不然启动hadoop会报错:Error: JAVA_HOME is incorrectly set.修改上面文件配置

4、测试

配置成功

5、替代和转移

从下载的winutils-master选择相应版本(这里我用的2.7.1,版本比较近,没有影响),将其bin文件夹替换hadoop-2.7.0\bin文件夹。同时,将bin下的hadoop.dll文件拷贝至C:\Windows\System32下一份

6、创建文件夹

在hadoop文件下创建tmp、namenode和datanode文件夹,以我的为例:

E:\hadoop\hadoop-2.7.0\tmp

E:\hadoop\hadoop-2.7.0\data\dfs\datanode

E:\hadoop\hadoop-2.7.0\data\dfs\namenode

为配置文件做准备

7、修改配置文件

需要修改四个配置文件(etc\hadoop目录下):core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml

core-site.xml

这里端口我使用9000,端口要注意不被占用。可使用其它端口号。

查看端口是否占用命令:netstat -ano |findstr “post_number”

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/E:/hadoop/hadoop-2.7.0/tmp</value>
	</property>
</configuration>
hdfs-site.xml
<configuration>
	<property>
		<name>dfs.replication</name>
		<!--  value 1,because it is single hadoop -->
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.http-address</name>
		<value>localhost:50070</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
          		<!--  Create the directory before use it -->
        		<value>/E:/hadoop/hadoop-2.7.0/data/dfs/namenode</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
         		<!--  Create the directory before use it -->
        		<value>/E:/hadoop/hadoop-2.7.0/data/dfs/datanode</value>
	</property>

	<property>
    		<name>dfs.permissions</name>
    		<value>false</value>
	</property>
</configuration>

dfs.permissions设为false,比如可能后面进行HDFS相关操作,会出现org.apache.hadoop.security.AccessControlException: Permission denied: user=root...的错误

mapred-site.xml
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

如果是mapred-site.xml.template则把.template后缀去掉

yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
    	<property>
        		<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
    	</property>
</configuration>

8、初始化namenode

到bin目录下执行:hdfs namenode -format

(以管理员身份运行)

每次格式化时最好把datanode、namenode和tmp目录下的文件删掉,避免出现一些ClusterId之类的问题

9、启动Hadoop

到sbin目录下右键管理员身份运行start-all.cmd,或命令运行:start-all.cmd

出现上面四个子窗口。

10、验证

览器输如http://localhost:8080查看集群状态

http://localhost:50070/查看namenode管理界面

Hadoop——Hadoop单机搭建问题汇总

Hadoop——HDFS的Java API操作(文件上传、下载、删除等)

Logo

大数据从业者之家,一起探索大数据的无限可能!

更多推荐