本地安装HDFS(Hadoop)

16 篇文章 0 订阅
5 篇文章 0 订阅

开发阶段本地远程请求服务器有点慢,于是自己本地安装一个HDFS

下载地址 https://hadoop.apache.org/releases.html  本人安装的3.1.3

下载解压放到自己指定位置,Hadoop安装必须要安装JDK1.8以上,配置系统环境变量path中添加%HADOOP_HOME%\bin,和JAVA_HOME方式一致,linux自行安装配置

JAVA_HOME安装目录不能有空格,不然启动hadoop会报错:Error: JAVA_HOME is incorrectly set.Please update D:\java\hadoop-3.1.3\etc\hadoop\hadoop-env.cmd 如果是windows的Program Files目录,则可以使用PROGRA~1代替

hadoop在windows上运行需要winutils支持和hadoop.dll等文件,将文件拷贝至bin目录下,尽量不要和该目录下其他文件有冲突,如果有依赖性错误,拷贝至C:\Windows\System32下一份  https://github.com/steveloughran/winutils

 

修改hadoop-env.sh,mapred-site.xml,core-site.xml,hdfs-site.xml,yarn-site.xml。都在etc\hadoop目录下

1、hadoop-env.sh/hadoop-env.cmd  环境变量配置

错误的路径(路径不能有空格),linux同理,上面①有说道

正确的

windows系统下hadoop默认已经配置了,文件是hadoop-env.cmd。hadoop-env.sh为linux操作系统环境变量配置文件

两种方式都可以,二选其一

2、mapred-site.xml  

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

3、core-site.xml  

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9001</value>
		<description>以前用的是fs.default.name,定义HadoopMaster的URI和端口,如hdfs://hadoopmaster:9000,映射hadoopmaster域名或者本机host文件</description>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/E:/java/hadoop-3.1.3/tmp</value>
		<description>存放hadoop文件系统依赖的基本配置,安装hadoop的时候建议就进行配置,否则下次重启会清空tmp目录,</description>
	</property>
</configuration>

创建tmp文件夹

fs.default.name和fs.defaultFS区别

用 fs.default.name还是用 fs.defaultFS ,要首先判断是否开启了 NN 的HA (namenode 的 highavaliable)namenode多节点。如果开启了nn ha,那么就用fs.defaultFS,在单一namenode的情况下,就用 fs.default.name

如果在单一namenode使用fs.defaultFS会报错:ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.

最开始没有重新配置hadoop.tmp.dir,报错了,找到网上的说法是:必须重新配置,否则搭建成功后,下次重新运行直接报错,因为默认数据文件都是放置在tmp目录下,这个目录中文件会在服务器关闭情况下删除,路径从bin当前目录下开始算起.写相对路径,或者以“/”开头写绝对路径

4、hdfs-site.xml  

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
		<description>hdfs数据块的复制份数,默认3,设置复制数为1,即不进行复制,理论上份数越多跑数速度越快,但是需要的存储空间也更多。有钱人可以调5或者6</description>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/E:/java/hadoop-3.1.3/data/namenode</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/E:/java/hadoop-3.1.3/data/datanode</value>
	</property>
	<!--
    <property>
		<name>dfs.namenode.rpc-address</name>
		<value>localhost:9010</value>
	</property>
	-->
</configuration>

创建data文件夹,data文件夹创建namenode和datanode文件夹

 

dfs.namenode.name.dir是保存FsImage镜像的目录,作用是存放hadoop的名称节点namenode里的metadata
dfs.datanode.data.dir是存放HDFS文件系统数据文件的目录,作用是存放hadoop的数据节点datanode里的多个数据块

dfs.namenode.rpc-address对应的是查看hdfs界面的链接地址

5、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>

6、hdfs namenode -format

以超级管理员运行命令 hdfs namenode -format,出现successfully说明format成功

7、启动hadoop

进入sbin目录下,双击start-all.cmd或者命令输入 .\start-all.cmd启动hadoop集群

出现下面四个窗口表示启动hadoop集群成功

hadoop namenode、hadoop datanode、yarn nodemanager、yarn resourcemanager

 

 

如果start-all.cmd启动hadoop报错

org.apache.hadoop.io.nativeio.NativeIO$POSIX.stat(Ljava/lang/String;)Lorg/apache/hadoop/io/nativeio/NativeIO$POSIX$Stat;

更换hadoop.dll和winutils.exe,我hadoop是3.1.3的,使用3.1.1的没问题

https://github.com/selfgrowth/apache-hadoop-3.1.1-winutils

 

浏览器输入http://localhost:8088/cluster查看集群状态

http://localhost:9870/查看namenode管理界面,3.1.3版本端口不是50070,据说3.0后是9870,3.0前是50070。官方没有找到具体说明。即使配了也没用,有待研究,知道了请留言告知,感谢。如果50070不行就用9870.

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值