Windows上安装Hadoop 3.x

     

目录

0. 安装Java

1. 安装Hadoop

1.1 下载Hadoop

1.2 下载winutils

2. 配置Hadoop

1. hadoop-env.cmd

2. 创建数据目录

3. core-site.xml

4. hdfs-site.xml

3. 启动测试

3.1 namenode格式化

3.2 启动Hadoop

 3.3 查看webui

3.4 测试hdfs

3.5. 测试MapReduce

4. 还没结束

4.1 YARN的webui没看到任务

4.2 hadoop-streaming的小坑


我记得10年前Windows上装Hadoop得借助cygwin,现在不用了。现在装起来更容易了,今天试了一下并记录一下过程免得忘了。当然win上玩Hadoop多半为了学习,和之前Windows上安装HBASE作一个呼应。

百度一下还是很多的,我参考的主要是两篇:

Windows环境下hadoop安装和配置详细步骤(图文)_windows安装hadoop及配置_yujkss的博客-CSDN博客

Windows安装Hadoop3.x及在Windows环境下本地开发_hadoop3.x带snappy(可用于windows本地开发)_CodeDevMaster的博客-CSDN博客

这两篇的过程居然还有一些不一样,经过尝试,发现各有一些没考虑到的,分享一下我的踩坑过程

0. 安装Java

这一步没什么好说的,我安装的是jdk1.8u202, 可以在华为这下载到。

安装完了配置一下环境变量的JAVA_HOME, 并且把 %JAVA_HOME%\bin 添加到Path里。

1. 安装Hadoop

1.1 下载Hadoop

从官方渠道  https://archive.apache.org/dist/hadoop/common/ 下载,速度较慢可以先用百度网盘离线下载

 Windows上安装Hadoop 3.x_第1张图片

然后配置一下这个目录到环境变量的 HADOOP_HOME 。并且把 %HADOOP_HOME%\bin 添加到Path里。

1.2 下载winutils

下载Windows专用的winutils.exehadoop.dll 放到  /bin 目录下和 C:\Windows\System32 目录下(只放bin里,不放system32,哪怕配置过Path环境变量也不够,后面测试MapReduce就报错了)。这里需要对应winutils和Hadoop的版本。看winutils的github这里,GitHub - vhma/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows . 如果上不去,直接看这里:Hadoop 之 winutils_电光闪烁的博客-CSDN博客。

这就是为啥我选的Hadoop版本是3.1.2。

2. 配置Hadoop

1. hadoop-env.cmd

因为环境变量配了JAVA_HOME, 所以这个文件不用改

2. 创建数据目录

在%HADOOP_HOME%下创建tmpdata目录,在data下创建namenodedatanode目录。其实目录在哪无所谓,后面路径写对就行。

3. core-site.xml


	
        fs.defaultFS
        hdfs://localhost:9000
    
    
        hadoop.tmp.dir
        D:/bigdata/hadoop-3.1.2/tmp
    

这里路径分隔符可以写“\”,建议还是用“/” ,因为下面的hdfs-site就不能用 “\”。

4. hdfs-site.xml


    
        dfs.namenode.name.dir
        /D:/bigdata/hadoop-3.1.2/data/namenode
    
	
        dfs.datanode.data.dir
        /D:/bigdata/hadoop-3.1.2/data/datanode
    	

这里连盘符前都要加 “/”

3. 启动测试

到这里其实就可以用了。准备开始,建议用管理员权限打开CMD

3.1 namenode格式化

hdfs namenode -format

执行下去如果没问题,可能会遇到一个Y or N 的选择,y就行

3.2 启动Hadoop

执行start-all.cmd

%HADOOP_HOME%\sbin\start-all.cmd

它会启动4个进程:

Windows上安装Hadoop 3.x_第2张图片

如果需要关闭,用stop-all.cmd就行,它会关掉4个打开的进程。

 3.3 查看webui

hdfs的地址是:http://localhost:9870/

Windows上安装Hadoop 3.x_第3张图片

yarn的地址是:http://localhost:8088/cluster

Windows上安装Hadoop 3.x_第4张图片

3.4 测试hdfs

Windows上安装Hadoop 3.x_第5张图片

3.5. 测试MapReduce

通过自带的example的运行wordcount,

hadoop jar share\hadoop\mapreduce\hadoop-mapreduce-examples-3.1.2.jar wordcount /usr/words.txt /output

 然后很快就会看到运行日志,包括结果也出来了

Windows上安装Hadoop 3.x_第6张图片

 你以为这就OK了,其实没结束

4. 还没结束

4.1 YARN的webui没看到任务

运行了wordcount的MapReduce作业,怎么会看不到job历史,包括有些人也遇到过这个。找到一个解决方案(可能只配置这里还不够):Yarn UI 不显示任务 - 工克己 - 博客园 (cnblogs.com)

配置mapred-site.xml


    
        mapreduce.framework.name
        yarn
    

 估计是开启由YARN管理MapReduce计算程序,这样才能在YARN的任务队列里看到。

那么yarn-site.xml是不是也要配,顺便一起吧


    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.nodemanager.aux-services.mapreduce_shuffle.class
        org.apache.hadoop.mapred.ShuffleHandler
    
    
        yarn.resourcemanager.hostname
        localhost
    

关了重启动Hadoop(重启Hadoop会遇到过各种各样的问题,其中一个hdfs不能操作了:Name node is in safe mode.  遇到这个就删了数据目录重新格式化....还包括4个进程可能不能正常stop掉等等。

删掉/output目录,再次运行wordcount,报错了,长篇大论意思是yarn管理的container启动不起来,主要信息是 Exception message: CreateSymbolicLink error (1314): ???????????

于是根据这篇博客的方法解决:Windows平台Hadoop出现 Exception message: CreateSymbolicLink error (1314): ???????????_lhyxcxy的博客-CSDN博客

里面两个方法,我也没搞清楚是哪个起作用,所以前面说的建议用管理员权限打开CMD。

最后解决的结果是wordcount花费大量时间在job的启动上, 然后webui能看到任务历史了。

Windows上安装Hadoop 3.x_第7张图片

最后,如果只是为了学习感觉应该不需要这么用YARN来跑作业。

4.2 hadoop-streaming的小坑

跑hadoop-streaming时候, -files这种通用参数必须放在其他参数的前面,否则会报"Streaming command failed"的错误

 如下:

hadoop jar share/hadoop/tools/lib/hadoop-streaming-3.1.2.jar -files "map1.py,red1.py" -input /usr -output /output -mapper "python map1.py" -reducer "python red1.py"

你可能感兴趣的:(分布式,hadoop,大数据,Windows平台)