集群安装
准备工具:
虚拟机:VMware Workstation 12
jdk:jdk-8u141-linux-x64.tar.gz
服务器ISO:CentOS-7.iso
hadoop:hadoop-2.8.4.tar.gz
ssh工具:MobaXterm
VMWare虚拟机建三台CentOS,网络配置为NAT。
hd-even-01 hd-even-02 hd-even-03
关闭防火墙:systemctl stop firewalld
禁止开机启动:systemctl disable firewalld
查看防火墙状态:firewall-cmd --state
默认在hd-even-01配置
1. 设置静态Ip,以免开机后ip重新分配。(注意:ifcfg-eno16777736不固定,ifcfg-e+tab键自动出现本机的)
vi /etc/sysconfig/network-script/ifcfg-eno16777736
注释BOOTPROTO="DHCP"这一行
#BOOTPROTO="DHCP"
添加内容:
IPADDR=192.168.35.129
NETMASK=255.255.255.0
GATEWAY=192.168.85.2
DNS1=101.198.198.198
三个服务器都要配置
IPADDR是服务器本身的IP,网关看虚拟机的网络配置,DNS1从主机的DNS选一个,查看windows DNS的命令:ipconfig /all
2.设置hostname,hd-even-01 hd-even-02 hd-even-03都要设置,修改/etc/hostname
vi /etc/hostname
3.在hd-even-01 设置hosts,修改/etc/hosts
vi /etc/hosts
ip hostname 的形式:
192.168.35.128 hd-even-01
192.168.35.129 hd-even-02
192.168.35.130 hd-even-03
service network restart #使网络生效
** 4.在hd-even-01 设置ssh免密**
ssh-keygen //一直回车
ssh-copy-id 自己IP
ssh-copy-id其他IP
5.分发hosts,把配置分发给其他服务器,就不用每台都重新配置。
scp -r /etc/hosts hd-even-02:/etc/
scp -r /etc/hosts hd-even-03:/etc/
6.本机(windows系统)设置host,c:/window/System32/drivers/etc/hosts
内容和步骤3一样。
** 7.下载MobaXterm**
用主机名来连接三台服务器,具体怎么使用自行百度
8. 上传jdk.tar.tz到/home/even/hd
解压jdk
tar -zxvf jdk.tar.tz
rm jdk.tar.tz
9.配置环境变量
vi /etc/profile
export JAVA_HOME=/home/even/hd
export PATH=$PATH:$JAVA_HOME/bin
生效环境变量:
source /etc/profile
10.分发环境变量
scp -r /home/even/hd/jdk hd-even-02:/home/even/hd/
scp -r /home/even/hd/jdk hd-even-03:/home/even/hd/
scp -r /etc/profile hd-even-02:/etc/
scp -r /etc/profile hd-even-03:/etc/
其他服务器也要:source /etc/profile
11.上传hadoop.tar.tz到/home/even/hd
tar -zxvf hadoop.tar.tz -C /home/even/hd/
12.修改hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/home/even/hd/jdk8
13.修改etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hd-even-01:9000</value>
</property>
</configuration>
14.修改hdfs-site.xml
<configuration>
//配置元数据存储位置
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/even/hd/dfs/name</value>
</property>
//配置数据存储位置
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/even/hd/dfs/data</value>
</property>
</configuration>
15.配置hadoop的环境变量
vi /etc/profile
export HADOOP_HOME=/home/even/hd/hadoop-2.8.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
16.格式化namenode
hadoop namenode -format
会在上面hdfs-site配置的namenode目录下生成对应的文件夹,包含namenode的文件
17.分发hadoop到其他服务器,避免重复配置
scp -r /home/even/hd/hadoop hd-even-02:/home/even/hd/
scp -r /home/even/hd/hadoop hd-even-03:/home/even/hd/
scp -r /etc/profile hd-even-02:/etc
scp -r /etc/profile hd-even-03:/etc
source /etc/profile
18.在hd-even-01启动namenode
hadoop-daemon.sh start namenode
jps查看进程
19.在hd-even-02 hd-even-03启动datanode
hadoop-daemon.sh start datanode
20.本机访问http://hd-even-01:50070
一键启动集群
修改hd-even-01的hadoop目录/etc/hadoop/slaves,添加datanode的主机号hd-even-02,hd-even-03
一键启动集群命令:start-dfs.sh
一键关闭集群命令:stop-dfs.sh
修改SecondaryNameNode的位置,SecondaryNameNode作用:合并镜像文件和备份镜像文件
修改hdfs-site.xml,添加:
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hd-even-02:50090</value>
<description>
The secondary namenode http server address and port.
</description>
</property>
基本命令
在NameNode服务器操作:
hdfs dfs -help #查看帮助
hdfs dfs -ls / #查看当前目录信息
hdfs dfs -put /本地路径 /hdfs路径 #上传文件
上传的文件可以通过网页形式查看,IP是NameNode的Host
http://192.168.11.136:50070/explorer.html#/
Replication是副本数的意思,默认为3。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181204095711935.png)
可以通过修改hdfs-site.xml文件来改变块大小和副本数
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
block大小,文件块大小
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
<description>
The default block size for new files, in bytes.
You can use the following suffix (case insensitive):
k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
Or provide complete size in bytes (such as 134217728 for 128 MB).
</description>
</property>
hdfs dfs -moveFromLocal a.txt /aa.txt #剪切文件
hdfs dfs -get /hdfs路径 /本地路径 #下载文件到本地
hdfs dfs -getmerge /hdfs路径文件夹 /合并后的文件 #合并下载
hdfs dfs -mkdir /文件夹名 #创建文件夹
hdfs dfs -mkdir -p /hunterter/henshuai #创建多级文件夹
hdfs dfs -mv /hdfs路径 /hdfs路径 #移动hdfs文件
hdfs dfs -cp /hdfs路径 /hdfs路径 #复制hdfs文件
hdfs dfs -rm /aa.txt #删除hdfs文件
hdfs dfs -rm -r /hunterter #删除hdfs文件夹
hdfs dfs -cat /文件 #查看hdfs中的文件
hdfs dfs -tail -f /文件 #查看hdfs中的文件
hdfs dfs -count /文件夹 #查看文件夹中有多少个文件,四个参数:路径深度|文件数|大小|当前文件夹名
hdfs dfs -df / #查看hdfs的总空间
hdfs dfs -df -h / #查看hdfs的总空间
hdfs dfs -setrep 1 /hdfs路径 #设置副本数,即Replication