Hadoop-3.0.3安装教程

x33g5p2x  于2021-12-10 转载在 Hadoop  
字(3.9k)|赞(0)|评价(0)|浏览(1009)

配置伪分布式系统

下载软件

我这里提供Hadoop-3.0.3的安装包
链接:https://pan.baidu.com/s/1prQlQZxikjcPMOsVBrda1w
提取码:1234

当然你也可以去官网下载自己找具体版本下面就大概演示了下怎么去下载的
https://hadoop.apache.org/releases.html

然后将hadoop-3.0.3.tar.gz上传的linux上我这里以centos7为例:

cd ~
mkdir  hadoop
cd  hadoop
tar  -zxf  hadoop-3.0.3.tar.gz

然后安装JDK配置环境变量

可以参考这篇文件
还需要在hadoop-3.0.3/etc/hadoop/hadoop-env.sh 里再显示地重新声明一遍JAVA_HOME

ssh免登陆

先检测是否可用免登陆到本机

SSH 本地主机ip

如果需要输入密码那么就不能免登录,那么使用hadoop就会失败
配置ssh免登陆:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

配置Hadoop环境变量

vi /etc/profile

文件最后添加内容如下:

PATH="$PATH:/root/hadoop/hadoop-3.0.3/bin"
export PATH

刷新环境变量立即生效

source /etc/profile

关闭防火墙

systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld

修改hadoop配置文件

etc/hadoop/core-site.xml:

<configuration>
 		<property>
             <name>hadoop.tmp.dir</name>
             <value>file:/root/hadoop/hadoop-3.0.3/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://localhost:9000</value>
        </property>
</configuration>

注意: <value>hdfs://localhost:9000</value> 改为你服务器的ip,否则启动不起来DataNode

etc/hadoop/hdfs-site.xml:

<configuration>
        <property>
             <name>dfs.replication</name>
             <value>1</value>
        </property>
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/root/hadoop/hadoop-3.0.3/tmp/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/root/hadoop/hadoop-3.0.3/tmp/dfs/data</value>
        </property>
</configuration>

格式化文件系统

注意: 格式化,会将数据全部清空的,而且如果hadoop启动状态是无法进行格式化的,所有建议在安装的时候格式化一次就行了之后就不需要了

/root/hadoop/hadoop-3.0.3/bin/hdfs namenode -format

如果第二次会出现下图: 意思就是让你重写格式你选y就行了

格式成功后 /root/hadoop/hadoop-3.0.3/tmp 下会出现dfs目录

启动 NameNode和 DataNode

/root/hadoop/hadoop-3.0.3/sbin/start-dfs.sh

然后检测是否启动成功jps

然后在通过游览器访问hadoop
Hadoop3之前: http://192.168.42.129:50070/
Hadoop3之后: http://192.168.42.129:9870/

其他问题:

使用root用户操作hadoop失败

在/hadoop/sbin路径下:将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

hadoop日志

/root/hadoop/hadoop-3.0.3/logs

遇到问题可以在这里找原因

DataNode启动失败问题

查看日志发现

java.io.IOException: Incompatible clusterIDs in /root/hadoop/hadoop-3.0.3/tmp/dfs/data: namenode clusterID = CID-d99e47c9-9220-4792-bc2b-52831ffab2c9; datanode clusterID = CID-9667705d-79f2-4727-b625-93f02373cd9c
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:719)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:284)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:397)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:377)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:541)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1705)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1665)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:390)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:280)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:816)
	at java.lang.Thread.run(Thread.java:748)

这个意思是说namenode 和datanode Id 不一致因为当执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)新生成一个current/VERSION文件,记录clusterID,标识了所格式化的 namenode的版本。多次格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。

解决办法:
删除DataNode的current文件

rm -rf /root/hadoop/hadoop-3.0.3/tmp/dfs/data/current

相关文章