Windows下搭建Hadoop伪分布式

Windows下搭建Hadoop伪分布式

准备

在Windows中安装hadoop,可以兼容32位和64位操作系统中编译的,我们可以直接在官网中下载编译好的二进制文件来进行安装。另外在Windows中想要运行hadoop,就要配置hadoop的window启动脚本。

下面给出相应的下载地址,根据个人使用的版本进行选择。

hadoop原生安装包下载地址:http://hadoop.apache.org/releases.html

hadoopWindows脚本下载地址:https://github.com/steveloughran/winutils

环境部署

首先将下载好的hadoop解压到相应的部署路径下,本示例将会放在D盘的根目录下。(使用WinRAR解压时,一定要先使用管理员启动WinRAR,否则可能会遇到解压失败的情况。)

解压完成之后将hadoop配置到环境变量中:

HADOOP_HOME=D:\hadoop-2.7.5

Path下添加:%HADOOP_HOME%\bin

在C:\Windows\System32\drivers\etc\hosts文件中添加主机名和ip的映射关机:

我的主机名叫KevinBruce

127.0.0.1       localhost	KevinBruce

复制window hadoop脚本

将下载下来的winutils中对应的hadoop大版本的目录下的bin目录下的文件复制到HADOOP_HOME下的bin目录下。

配置hadoop

在以下的四个文件中,添加相应的配置信息。

File: D:\hadoop-2.7.5\etc\hadoop\core-site.xml

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
    <!-- 配置Hadoop临时目录文件 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:///D:/hadoop-2.7.5/data/tmp</value>
    </property>
</configuration>

此处的localhost最好写本机的物理ip。

File: D:\hadoop-2.7.5\etc\hadoop\hdfs-site.xml

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
    <!-- 配置Secondary NameNode的IP地址及端口(HTTP) -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>localhost:50090</value>
    </property>

    <!-- 配置Secondary NameNode的IP地址及端口(HTTPS) -->
    <property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>localhost:50091</value>
    </property>
	<property>
	    <name>dfs.namenode.name.dir</name>
		<value>file:///D:/hadoop-2.7.5/data/dfs/namenode</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:///D:/hadoop-2.7.5/data/dfs/datanode</value>
	</property>
</configuration>

注意:需要在配置的相应的目录下创建data目录(本示例中配置在HADOOP_HOME下了)。

File: D:\hadoop-2.7.5\etc\hadoop\yarn-site.xml

<configuration>
    <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>
	<property>
	    <name>yarn.application.classpath</name>
		<value>
		    %HADOOP_HOME%\etc\hadoop,
		    %HADOOP_HOME%\share\hadoop\common\*,
		    %HADOOP_HOME%\share\hadoop\common\lib\*,
		    %HADOOP_HOME%\share\hadoop\mapreduce\*,
		    %HADOOP_HOME%\share\hadoop\mapreduce\lib\*,
		    %HADOOP_HOME%\share\hadoop\hdfs\*,
		    %HADOOP_HOME%\share\hadoop\hdfs\lib\*,          
		    %HADOOP_HOME%\share\hadoop\yarn\*,
		    %HADOOP_HOME%\share\hadoop\yarn\lib\*
		</value>
    </property>
  <!-- <property> -->
      <!-- <name>yarn.resourcemanager.hostname</name> -->
      <!-- <value>localhost</value> -->
  <!-- </property> -->

  <!-- <property> -->
      <!-- <name>yarn.nodemanager.resource.memory-mb</name> -->
      <!-- <value>24576</value> -->
  <!-- </property> -->

  <!-- <property> -->
      <!-- <name>yarn.nodemanager.resource.cpu-vcores</name> -->
      <!-- <value>12</value> -->
  <!-- </property> -->

  <!-- <property> -->
      <!-- <name>yarn.nodemanager.local-dirs</name> -->
      <!-- <value>/data/yarn/local-dir</value> -->
  <!-- </property> -->
</configuration>

File: D:\hadoop-2.7.5\etc\hadoop\mapred-site.xml

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

初始化hdfs(format NameNode)

因为我们配置环境变量了,所以我们可以在powershell或者是cmd下的任意路径中执行以下命令来实现对HDFS的初始化:

PS D:\hadoop-2.7.5\sbin> hdfs namenode -format

注意:如果没有配置环境变量那就必须进入到hadoop安装目录的bin目录下去执行该命令。

启动HDFS和YARN服务

在配置环境变量的情况下,我们可以在仁任意路径执行以下命令去启动服务,如果没有配置环境变量就必须进入到hadoop安装目录下的sbin目录下执行。

# 启动HDFS服务
PS D:\hadoop-2.7.5\sbin> start-dfs
# 启动YARN服务
PS D:\hadoop-2.7.5\sbin> start-yarn

访问页面验证是否启动成功

访问YARN的监控页面:http://localhost:8042

访问HDFS的监控页面:http://localhost:50070

如果能够访问到相应的页面表示部署成功。否则请检查配置中的路径是否正确,部署时,是否有步骤遗漏。

运行测试任务

验证HDFS

# 在HDFS中创建一个文件夹
PS D:\hadoop-2.7.5\bin> hdfs dfs -mkdir /input
# 向HDFS中上传文件到input目录下
PS D:\hadoop-2.7.5\bin> hdfs dfs -copyFromLocal D:\hadoop-2.7.5\README.txt /input

验证YARN

PS D:\hadoop-2.7.5> hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /input/README.txt /out

如果执行以上的命令没有出现过任何问题表示部署成功,可以尽情的Carry了。

停止HDFS和YARN服务

# 停止yarn服务
PS D:\hadoop-2.7.5\sbin> stop-yarn
# 停止hdfs服务
PS D:\hadoop-2.7.5\sbin> stop-dfs

FAQ

如果你在运行MapReduce的wordcount程序时,遇到以下这样的问题时:

Exception message: CreateSymbolicLink error (1314): A required privilege is not held by the client.

你需要停掉yarn和hdfs服务,然后以管理员的身份运行powershell或者是cmd,重新启动这两个服务再去执行测试任务。

猜你喜欢

转载自my.oschina.net/epoch/blog/1786596