hadoop完全分布环境搭建

来源:互联网 发布:彩先知软件 编辑:程序博客网 时间:2024/05/16 00:57
设备:win10操作系统,内存4G
软件:vnware workstation,secureCRT,xftp
材料:centos7镜像文件、jdk1.8.0_144、hadoop-2.7.4

一、安装虚拟机
在虚拟机中新建两个centos7虚拟机,一个分配内存1G作为namenode,另一个分配512M作为datanode(可以根据自己主机的内存而定,博主内存4G不足以将3个datanode都设置为1G),为了运行流畅,datanode可以不安装图形界面。
二、静态IP设置
1.将两个虚拟机的网络模式都设置为仅主机模式,主机虚拟网卡的IP设置为192.168.10.1
2.配置两台虚拟机的IP:vi /etc/sysconfig/network-scripts/ifcfg-ens33(网卡名称“ens33”并不是确定的),ONBOOT修改为yes,其后添加ip地址、掩码、网关(为主机虚拟网卡的IP地址)和网卡物理地址(ifconfig查询到)
ONBOOT=yes
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
HWADDR=00:0c:29:ea:cb:d1
将namenode设置为192.168.10.100,datanode设置为192.168.10.101
配置完成后  network service restart 生效
3.修改主机名:vi /etc/hostname
namenode中:HOSTNAME=master
datanode中:HOSTNAME=slave1
(节点增加时也需要进行如上的配置)
4.修改hosts文件,以便namenode可以通过主机名解析datanode的IP
192.168.10.100   master
192.168.10.101  slave1
(节点增加时,往下排列)
三、ssh免密登录
namenode可以免密登录登陆各个节点,获取反馈节点数据存储和程序运行的数据
在root目录(也可以使用其他用户的家目录)的路径下运行
ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa
ssh-keygen代表生成密钥;-t表示生成密钥的类型;-P提供密语;-f指定生成的文件。
这个命令执行完毕后会在/root/.ssh文件夹下生成两个文件,分别是id_dsa、id_dsa.pub,这是SSH的一对私钥和公钥
对文件授权:
chmod 600 /root/.ssh/authorized_keys
chmod 700 /root/.ssh
以上步骤在各个节点上都要运行
接下来再namenode中
将id_dsa.pub追加key中:cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys
将本地的id_dsa.pub复制到远程datanode的authorized_keys中
scp /root/.ssh/id_sda.pub root@192.168.10.101:/root/.ssh/authorized_keys
配置完成后,登陆验证 ssh master(登陆本机) ssh slave1(192.168.10.101)登陆远程datanode
注意:如果配置完成后,更换过虚拟机,但是使用了之前相同的ip,需要将namenode节点中的记录清除
ssh-keygen -R 192.168.10.101(中途更换过ip为192.168.10.101的虚拟机)
四、搭建java环境
1.检查已有的jdk
在所有的节点上都需要有java环境
检查已经安装过的jdk:rpm -qa|grep jdk
删除已经安装的文件:rpm -e --nodeps +安装的jdk包名称(上个命令查询到的所有jdk文件)
2.下载jdk文件,xftp拖到linux上,解压到/usr/local目录下
3.配置环境变量 vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0(文件名中途改过)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
配置完成后 source /etc/profile生效
五、安装hadoop
在所有的节点上都需要进行如下配置
1.官网下载hadoop:http://www.linuxidc.com/Linux/2016-07/133508.htm
2.xftp拖到linux上,解压到 /usr/local目录下
3.到安装路径下的/etc/hadoop下找到配置文件进行配置
>>>hadoop-env.sh配置
# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
找到上面的内容将JAVA_HOME的路径加到后面
export JAVA_HOME=/usr/local/jdk1.8.0
>>>core-site.xml配置
在configuration中增加属性配置,分别指定namenode的ip和端口,以及hdfs数据在在本地存储目录
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.10.100:9000</value>
</property>
<property>
<name>fs.tmp.dir</name>
<value>/usr/local/hadoop2.7.4/tmp</value>
</property>
</configuration>
>>>hdfs-site.xml配置
指定dfs.replication冗余备份数量为1(一般为3,此处节点数量不够,设置为1),namenode存储元数据(命名空间和变更日志)的路径,以及datanode存储数据块的位置
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>

<name>dfs.name.dir</name>
<value>/usr/local/hadoop2.7.4/tmp/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop2.7.4/tmp/data</value>
</property>
</configuration>
>>>mapred-site.xml.template配置
指定任务分配的IP和端口
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.10.100:9001</value>
</property>
</configuration>
4.hadoop环境变量配置
vi /etc/profile
增加如下内容
export HADOOP_HOME=/usr/local/hadoop2.7.4
export PATH=${HADOOP_HOME}/bin:$PATH
5.配置slaves文件:vi slaves
196.168.10.100
192.168.10.101
第一个对应名称节点IP,第二个对应数据节点的IP,如需增加节点,只需要往后面增加
六、启动hadoop
1.格式化hdfs文件系统:hadoop namenode -format
2.在/usr/local/hadoop2.7.4/sbin路径下启动hadoop :./start-all.sh
3.查看是否启动成功:
在namenode中用jps命令查看进程显示如下内容
5540 NodeManager
10212 Jps
5430 ResourceManager
4967 NameNode
5272 SecondaryNameNode
在datanode中用jps命令显示如下内容
3703 NodeManager
3799 Jps
2750 DataNode

也可以通过hadoop dfsadmin -report查看集群状态
或者在linux上用浏览器登录http://master:50070查看

七、增加节点
上述步骤完成之后只有一个数据节点和一个名称节点,只有足够多的节点方能体系分布式的优势,所以如果主机内存满足条件,可以在虚拟机中增加几个节点,按照上述步骤配置IP,主机名,JAVA环境,安装hadoop以及配置相应的文件(与上述slave1相同),在名称节点中配置slaves,hosts文件,完成之后需要在名称节点中格式化hdfs系统,启动即可。