工具
- 在虚拟机VMWare上安装三台Linux(centos7,一个主节点,两个子节点)虚拟机。最小化安装。
- 下载hadoop-2.7.4.tar.gz安装包
具体步骤
- 用Xftp文件传输软件把hadoop-2.7.4.tar.gz安装包上传到虚拟机/root目录下
- 解压缩:tar zxvf hadoop-2.7.4.tar.gz
- 把解压后的文件移动到指定路径:mv hadoop-2.7.4 /usr/share/
- 进入到安装目录下,打开hadoop-env.sh配置文件,vi etc/hadoop/hadoop-env.sh,指定jdk的安装位置
- 配置环境变量:vi /etc/profile
#Hadoop
export HADOOP_HOME=/usr/share/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
- 刷新环境变量:source /etc/profile
配置文件
进入到hadoop的安装目录:cd /usr/share/hadoop
(1)打开core-site.xml,vi etc/hadoop/core-site.xml,指定namenode
在文件中<configuration></configuration>配置节中增加属性
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
(2)打开hdfs-site.xml,vi etc/hadoop/hdfs-site.xml,指定SecondaryNameNode
在文件中<configuration></configuration>配置节中增加属性
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hdfs://master:50090</value>
</property>
修改/ect/hostname文件
每个节点都要修改,
主节点上为
master
两个子节点分别为
node1
node2
修改完之后三个节点都要重启:reboot,使两个子节点的名称正常(我的两个子节点是克隆的主节点,所以要改,如果不是克隆的,不需要改)
修改/etc/hosts文件
Hosts的作用是可以在网络使用名字替换IP地址,文件内容如下(ip地址在前,名字在后,ip地址和名字千万不能写反):
192.168.2.128 master
192.168.2.131 node1
192.168.2.130 node2
在主节点NameNode上整理好,然后分发到各个节点。
scp /etc/hosts root@node1:/etc/hosts
scp /etc/hosts root@node2:/etc/hosts
修改slaves文件
进入到目录:cd /usr/share/hadoop/etc/hadoop
打开slaves文件:vi slaves
slaves文件如下:
master #让master同时成为datanode,生产环境通常不需要!
node1
node2
把配置好的hadoop分发给其他两个子节点
把整个hadoop文件夹分发给两个子节点:
scp -r /usr/share/hadoop root@node1:/usr/share/
scp -r /usr/share/hadoop root@node2:/usr/share/
这里还没获取公钥,所以需要密码,就是创建虚拟机时的密码
生成密钥、授权公钥
~/.ssh/authorized_keys
Authorized_keys的作用是可以免密码地使用SSH跨节点相互访问
生成密钥
在NameNode上使用ssh-keygen命令生成密钥对
ssh #先运行下ssh命令
ssh-keygen #生成密钥对(如果有,直接使用)
生成的密钥对在~/.ssh中,分别是:
id_rsa #私钥
id_rsa.pub #公钥
授权公钥
在NameNode上使用cat命令将公钥放入授权文件,授权后可以免密码访问
cat xxx.pub >> authorized_keys~
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #将生成的公钥添加到授权公钥中。
分发
将~/.ssh目录复制到任意一个DataNode
scp -r ~/.ssh root@node1:~/
scp -r ~/.ssh root@node2:~/
启动
格式化
在namenode上运行
hdfs namenode -format
启动
在namenode上运行
start-dfs.sh
检查启动结果
【1】用JPS查看Java进程
NameNode #NameNode启动了,NameNode上要有此进程
DataNode #DataJNode启动了,DataNode上要有此进程
SecondaryNameNode #SecondaryNameNode启动了
#这个是NameNode上的辅助进程
【2】用master:50070查看Hadoop站点,检查各个节点是否启动
【3】用命令测试,检查HDFS是否工作正常
hdfs dfs -mkdir /abc
hdfs dfs -ls /