安装hdfs集群的具体步骤:
一、首先需要准备N
台linux
服务器
学习阶段,用虚拟机即可!
先准备3台虚拟机:1个namenode节点 + 2 个datanode 节点
二、修改各台机器的主机名和ip
地址
主机名:node1 对应的ip地址:192.168.223.11
主机名:node2 对应的ip地址:192.168.223.12
主机名:node3 对应的ip地址:192.168.223.13
三台主机上用户均为:ws(用户名,可以自取)
2.1 修改主机ip和网络
①用root权限打开配置文件,命令如下:
# ens33是网卡名
vi /etc/sysconfig/network-scripts/ifcfg-ens33
②修改配置项
注网关和掩码可以VMware Workstation Pro中编辑->虚拟网络编辑器->更改设置->NAT设置中查看
#原有配置修改项
#一定设置为static,不然重新开机地址会改变
BOOTPROTO=static
# 开机启动设置为yes
ONBOOT=yes
# 增加项
#IP地址
IPADDR=192.168.223.13
# 网关
GATEWAY=192.168.223.2
# 掩码
NETMASK=255.255.255.0
# DNS解析,119.29.29.29是国内一个公共的地址解析服务器
DNS1=119.29.29.29
三台主机均完成配置后可以使用ping+主机IP地址看是否联通
注:CentOS 7 修改主机名可以用语句
hostnamectl set-hostname "node1"
hostnamectl set-hostname "node1" --static
hostnamectl set-hostname "node1" --pretty
三、从windows中用CRT软件进行远程连接
在windows中将各台linux机器的主机名配置到的windows的本地域名映射文件中:
c:/windows/system32/drivers/etc/hosts
192.168.223.11 node1
192.168.223.12 node2
192.168.223.13 node3
用crt连接上后,修改一下crt的显示配置(字号,编码集改为UTF-8):
四、配置linux
服务器的基础软件环境
4.1、关闭防火墙
关闭防火墙
systemctl stop firewalld
禁止开机启动
systemctl disable firewalld
4.2、安装jdk:(hadoop体系中的各软件都是java开发的)
- 利用alt+p 打开sftp窗口,然后将jdk压缩包拖入sftp窗口
- 然后在linux中将jdk压缩包解压到/home/ws/apps/java 下
- 配置环境变量:JAVA_HOME PATH
vi /etc/profile 在文件的最后,加入:
export JAVA_HOME=/home/ws/apps/java/jdk1.8.0_60
export PATH=$PATH:$JAVA_HOME/bin
- 修改完成后,记得 source /etc/profile使配置生效
- 检验:在任意目录下输入命令: java -version 看是否成功执行
- 将安装好的jdk目录用scp命令拷贝到其他机器
- 将/etc/profile配置文件也用scp命令拷贝到其他机器并分别执行source命令
4.3、集群内主机的域名映射配置
在node1上,vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.223.11 node1
192.168.223.12 node2
192.168.223.13 node3
然后,将hosts文件拷贝到集群中的所有其他机器上
scp /etc/hosts node2:/etc/
scp /etc/hosts node3:/etc/
五、安装hdfs
集群
5.1、上传hadoop安装包到node1
修改配置文件
要点提示 |
|
hadoop的配置文件在:/home/ws/apps/hadoop安装目录/etc/hadoop/
1)
修改hadoop-env.sh
export JAVA_HOME=/home/ws/apps/java/jdk1.8.0_60
2)
修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
</configuration>
3)
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/ws/apps/hadoop/hdfsdata/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/ws/apps/hadoop/hdfsdata/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
</configuration>
4)
拷贝整个hadoop
安装目录到其他机器
scp -r /home/ws/apps/hadoop-2.8.0 node2:/home/ws/apps/
scp -r /home/ws/apps/hadoop-2.8.0 node3:/home/ws/apps/
5)
启动HDFS
所谓的启动HDFS,就是在对的机器上启动对的软件
要运行hadoop
的命令,需要在linux
环境中配置HADOOP_HOME
和PATH
环境变量
vi /etc/profile
export JAVA_HOME=/home/ws/apps/java/jdk1.8.0_60
export HADOOP_HOME=/home/ws/apps/hadoop/hadoop-2.8.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
首先,初始化namenode
的元数据目录
要在node1上执行hadoop的一个命令来初始化namenode的元数据存储目录
hadoop namenode -format
- 创建一个全新的元数据存储目录
- 生成记录元数据的文件fsimage
- 生成集群的相关标识:如:集群id——clusterID
然后,启动namenode
进程(在node1
上)
hadoop-daemon.sh start namenode
启动完后,首先用jps查看一下namenode的进程是否存在
然后,在windows
中用浏览器访问namenode
提供的web
端口:50070
版本不同,有些时候可能不是50070,那么查看一下namenode监听了拿下端口,用以下命令,其中进程号就是我们jps得到的
获得它坚挺的端口后,修改上面url的端口为我们自己的端口即可访问,比如我的就是9870端口
netstat -nltp | grep 进程号
[ws@node1 hadoop]$ netstat -nltp | grep 2907
tcp 0 0 0.0.0.0:9870 0.0.0.0:* LISTEN 2907/java
tcp 0 0 192.168.223.11:9000 0.0.0.0:* LISTEN 2907/java
然后,启动众datanode
们(在任意地方)
hadoop-daemon.sh start datanode
6)
用自动批量启动脚本来启动HDFS
-
先配置node1到集群中所有机器(包含自己)的免密登陆(详情见另外一篇博客
https://blog.csdn.net/wangshun_410/article/details/90613168
) -
配完免密后,可以执行一次
ssh 0.0.0.0
- 修改hadoop安装目录中/etc/hadoop/slaves(高版本是workes)(把需要启动datanode进程的节点列入)
-
在node1上用脚本:
start-dfs.sh
来自动启动整个集群 -
如果要停止,则用脚本:
stop-dfs.sh