这里假设name node的host
name为hdfs-name
,需要配置三个data node,host name分别为:
hdfs-data-0
, hdfs-data-1
,
hdfs-data-2
。
¶ 下载
https://dlcdn.apache.org/hadoop/common/
这里假设解压到了~/software/hadoop
。所以
export HADOOP_HOME=~/software/hadoop |
¶ 依赖
hadoop的运行需要JRE:
Debian 11 |
¶ hadoop 配置文件
这些配置文件要放到所有name node和data
node的$HADOOP_HOME/etc/hadoop
:
¶ hadoop-env.sh
设置一些环境变量,比如export JAVA_HOME=/usr/lib/jvm/default-java
¶ core-site.xml
设置HDFS的交互端口(通常为9000)。我的:
|
¶ workers
放data node的名字。后续访问data node都是通过这些名字访问的。本例:
hdfs-data-0 |
¶ hdfs-site.xml
可以设置默认replica个数,以及name node和data node的数据库文件存放的目录。我的:
|
¶ /etc/hosts
因为name node和data node依赖host
name来通信,所以需要在/etc/hosts
里添加对host
name的解析。
¶ Name node
Name
node需要能够解析它自己(不知道为什么),而且需要把/etc/hosts
里对自己的解析:
127.0.1.1 hdfs-name |
改成
192.168.122.102 hdfs-name |
因为可能是9000端口有一些奇怪的限制:
$ telnet localhost 9000 |
参考:
https://stackoverflow.com/questions/18322102/hadoop-connection-refused-on-port-9000
https://askubuntu.com/questions/352868/i-cant-connect-to-hadoop-port-9000
此外,还需要添加对data nodes的host name的解析:
192.168.122.103 hdfs-data-0 |
¶ Data node
一定要解析name node的host name。但是保险起见,我把所有node的主机名都解析了:
192.168.122.102 hdfs-name |
¶ SSH
需要配置公钥登录,使得name node能够免密码ssh到每个data node。(不知道是否需要能够免密码登录到自己)
¶ 启动集群
在name node上:
HADOOP_HOME/sbin/start-dfs.sh |
会自动启动data node。
Name node的默认Web UI端口为9870。
¶ 其他
¶ 更改权限
如果没有写权限会报错:
mkdir: Permission denied: user=xinyu, access=WRITE, inode="/":searchstar:supergroup:drwxr-xr-x |
可以用chmod解决:
bin/hdfs dfs -chmod 777 / |
参考:https://my.oschina.net/u/3197158/blog/1492629
¶ 修改已有数据的replica数量
hdfs-site.xml
里设置的是默认的replica数量,仅对新增数据有效。如果要修改老的数据的replica数量,比如修改为3,可以这样:
单个文件 |
¶ 注意事项
不能通过复制已有data node的磁盘来新增data node,否则会出现ID冲突:
Data node DatanodeRegistration(192.168.122.105:9866, datanodeUuid=d41eb640-253f-486c-94aa-bff5680fb18f, infoP |
¶ 官方文档
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html