目标:安装Hadoop3.3.1 伪分布式
-
确认已经与java开发环境(java -version)
-
下载hadoop.tar.zip安装包链接
-
解压到指定位置(建议
/usr/local/hadoop
) -
配置环境变量(.bashrc)
-
修改配置文件(在
hadoop/etc/hadoop/
):core-site.xml
,hdfs-site.xml
,hadoop-env.sh
[后面的不需要配,mapred-site.xml
,yarn-site.xml
],文件路径根据自己情况设置core-site.xml
<configuration> <property> <name>fs.defaultFSname> <value>hdfs://0.0.0.0:9000value> property> <property> <name>hadoop.tmp.dirname> <value>/usr/local/hadoop/tmpvalue> property> <property> <name>hadoop.tmp.dirname> <value>/usr/local/hadoop/tmpvalue> property> configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.data.dirname> <value>/usr/local/hadoop/hdfs/datavalue> <description>datanode上数据块的物理存储位置description> property> <property> <name>dfs.replicationname> <value>1value> property> <property> <name>dfs.permissionsname> <value>falsevalue> property> <property> <name>dfs.datanode.hostnamename> <value>hadoopvalue> property> configuration>
hadoop-env.sh
,在# export JAVA_HOME=
处新增,JAVA_HOME配自己的路径,root改为自己的用户名
export JAVA_HOME=/usr/lib/jvm/java export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
```
- 相关命令
# 启动hadoop所有节点 start-all.sh # 关闭 stop-all.sh # 查看java进程,正常应该有Jps,Namenode,Datanode,ResourceManager,NodeManager jps # 关闭安全模式,不关闭 HBase会出错 hdfs dfsadmin -safemode leave
- 正常流程
# 确认java环境
[root@main ~]# java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
# 启动hadoop集群
[root@main ~]# start-all.sh
Starting namenodes on [0.0.0.0]
上一次登录:五 3月 25 12:29:55 CST 2022pts/0 上
Starting datanodes
上一次登录:五 3月 25 12:30:19 CST 2022pts/0 上
Starting secondary namenodes [main]
上一次登录:五 3月 25 12:30:22 CST 2022pts/0 上
Starting resourcemanager
上一次登录:五 3月 25 12:30:32 CST 2022pts/0 上
Starting nodemanagers
上一次登录:五 3月 25 12:30:46 CST 2022pts/0 上
# 查看java进程
[root@main ~]# jps
206288 Jps
204005 DataNode
205508 NodeManager
203691 NameNode
204558 SecondaryNameNode
205181 ResourceManager
# 查看hdfs能否在本地正常访问,只截取了部分
[root@main ~]# hadoop fs -ls /
Found 7 items
drwxr-xr-x - root supergroup 0 2022-03-24 15:24 /hbase
-rw-r--r-- 1 wuhf supergroup 0 2022-03-24 17:54 /jjy.jpg
-rw-r--r-- 1 dr.who supergroup 15986 2022-03-18 18:53 /skeleton.png
# 关闭hadoop集群
[root@main ~]# stop-all.sh
Stopping namenodes on [0.0.0.0]
上一次登录:五 3月 25 12:30:49 CST 2022pts/0 上
Stopping datanodes
上一次登录:五 3月 25 12:31:25 CST 2022pts/0 上
Stopping secondary namenodes [main]
上一次登录:五 3月 25 12:31:27 CST 2022pts/0 上
Stopping nodemanagers
上一次登录:五 3月 25 12:31:30 CST 2022pts/0 上
Stopping resourcemanager
上一次登录:五 3月 25 12:31:35 CST 2022pts/0 上
遇到的问题参考
1
2
- 使用hdfs命令时有警告
[hadoop@main ~]$ hadoop fs -ls /
2022-03-18 13:42:49,610 WARN util.NativeCodeLoader:
Unable to load native-hadoop library for your platform...
using builtin-java classes where applicable
解决方法:(可以忽略警告),修改hadoop/etc/hadoop/log4j.properties
文件,新增
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
参考:1
start-all.sh
报错:只能被root执行
[hadoop@main ~]$ start-all.sh
WARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
Starting namenodes on [0.0.0.0]
ERROR: namenode can only be executed by root.
Starting datanodes
ERROR: datanode can only be executed by root.
Starting secondary namenodes [main]
ERROR: secondarynamenode can only be executed by root.
Starting resourcemanager
ERROR: resourcemanager can only be executed by root.
Starting nodemanagers
ERROR: nodemanager can only be executed by root.
解决方法:修改hadoop/etc/hadoop/hadoop-env.sh
,将最后的’root’替换为执行’命令的用户名(我的是root)’
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop
start-all.sh
报错:无法写logs
[hadoop@main ~]$ start-all.sh
WARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
Starting namenodes on [0.0.0.0]
0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
0.0.0.0: ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.
Starting datanodes
localhost: ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.
Starting secondary namenodes [main]
main: Warning: Permanently added 'main,172.17.43.2' (ECDSA) to the list of known hosts.
main: ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.
Starting resourcemanager
ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.
Starting nodemanagers
localhost: ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.
解决办法:给权限,执行sudo chmod -R 777 logs
start-all.sh
执行后,datanode未被启动
原因:多次执行初始化命令hadoop namenode –format
解决方法:- 不保留文件:删除
hadoop/hdfs/data
后,重新启动hdaoop - 保留文件:把
namenode
和datanode
的clusterID
改为一致
- 不保留文件:删除
参考
1
2
-
hadoop网页无法访问
解决方法:- hadoop2.x端口为50070,hadoop3.x端口为9870
- 对应端口没有放通:服务器的防火墙,云服务器的安全策略
-
网页内无法上传文件
原因:域名使用的是hadoop机器名
解决方法:- 使用其他工具上传文件
- 修改
C:\Windows\System32\drivers\etc\hosts
,进行域名映射
-
在win10的IDEA上使用
Big Data Tools
时,各种错误- 没找到
HADOOP_HOME
环境变量:下载残血版hadoop,只保留bin目录,并修改环境变量HADOOP_HOME
和path
- 缺少文件(
winutils.exe
hadoop.dll
)无法运行:下载并添加进hadoop/bin - 端口不对:hadoop3.x使用9000端口
core-site.xml
的fs.defaultFS
不是0.0.0.0
1&2 参考
1&2 一次解决,链接参考里的 - 没找到
-
使用IDEA开发HDFS程序上传文件,文件名有,内容为空
原因:请求的namenode,需要把数据传给datanode;(同6,但6的解决办法不适用)但datanode使用的是hadoop机器名,不是真实的域名
解决方法:我也不知道怎么办了,啊啊啊啊// Configuration conf = new Configuration(); // 加上下面这一句,直接使用真实域名 conf.set("dfs.client.use.datanode.hostname", "true");
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)