Hadoop安装与集群配置

0.12字数 1365阅读 2016

1.下载软件

a. 下载VirtualBox http://download.virtualbox.org/virtualbox/5.1.18/VirtualBox-5.1.18-114002-Win.exe
b. 下载CentOS http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
c. 下载XShell与XFtp 请在百度自己搜索与安装
d. 下载jdk http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.rpm
e. 下载hadoop2.7.3 -> http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

2.安装VirtualBox

下载后请自行安装,安装完需要自行安装linux,此文为centos7.可自行百度教程。
网络配置请参考我之前的文章《Virtualbox配置centos7网络》
在此简单的列举主要步骤如下:

a. 在虚拟机中选用host-only网络
b. vi /etc/sysconfig/network
NETWORKING=yes
c. vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 TYPE=Ethernet IPADDR=192.168.56.200 NETMASK=255.255.255.0
d. 修改主机名hostnamectl set-hostname master (主机名千万不能有下划线!)
e. 重启网络service network restart
f. 互相ping,看是否测试成功,若不成功,注意防火墙的影响。关闭windows或虚拟机的防火墙。
systemctl stop firewalld
systemctl disable firewalld

3.安装JDK

rpm -ivh ./xxxxx.jdk,验证rpm -qa | grep jdk,在命令行中敲java命令,确认jdk已经安装完成
配置环境变量:

JAVA_HOME=/usr/java/jdk1.8.0_91
JRE_HOME=/usr/java/jdk1.8.0_91/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

使环境变量生效:

source /etc/profile

4.安装hadoop

cd /usr/local
tar –xvf ./hadoop-2.7.3.tar.gz
把目录修改为hadoop mv hadoop-2.7.3 hadoop
修改hadoop-env.sh
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改export JAVA_HOME 语句为 export JAVA_HOME=/usr/java/default
把/usr/local/hadoop/bin和/usr/local/hadoop/sbin设到PATH中
vi /etc/profile
追加 export PATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin
source /etc/profile
测试hadoop命令是否可以直接执行,任意目录下敲hadoop

5.关闭虚拟机,复制三份

6.开机后,自行配置各自的网络配置,参照之前步骤。

主要是要修改:/etc/hosts,注意:四个节点的ip以及hostname都加上

7.分布式集群配置

7.1 配置core-site.xml

在所有的节点上都应该修改/etc/hadoop/core-site.xml.注意:需要修改tmp目录,不然默认是linux的tmp目录,这样会出现意想不到的错误,因为linux重启后,会删除/tmp目录下的内容。

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/current/tmp</value>
</property>
<property>
    <name>fs.trash.interval</name>
    <value>4320</value>
</property>

注意:必须在各个机器上一定要保持此配置的一致性。这里配置的是master的地址,与对外通讯的端口,slaves需要知道master对外提供通讯的地址与端口,所以各台机器需要保持一致,否则会在web管理页面发现live nodes是0.正常应该是slaves的数量。

image.png

7.2配置hdfs-site.xml

在所有节点上修改/etc/hadoop/hdfs-site.xml

<property>
   <name>dfs.namenode.name.dir</name>
   <value>/usr/local/hadoop/current/dfs/name</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>/usr/local/hadoop/current/dfs/data</value>
 </property>
 <property>
   <name>dfs.replication</name>
   <value>3</value>
 </property>
 <property>
   <name>dfs.webhdfs.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>dfs.permissions.superusergroup</name>
   <value>staff</value>
 </property>
 <property>
   <name>dfs.permissions.enabled</name>
   <value>false</value>
 </property>

7.3格式化HDFS

执行以下命令即可:

 hdfs namenode -format
image.png

8.启动集群

在master上启动hadoop-daemon.sh start namenode

image.png

在slave上启动hadoop-daemon.sh start datanode

image.png

用hdfs dfsadmin -report观察集群配置情况,如图所示,含有三个从节点

image.png

查看端口号:netstat -ntlp

image.png

通过http://192.168.56.100:50070/web界面观察集群运行情况

image.png

用hadoop-daemon.sh stop ...手工关闭集群

image.png
image.png

9.集中管理

9.1对集群进行集中管理,需要修改以下配置文件:

修改master上/etc/hadoop/slaves文件,每一个slave占一行

slave1
slave2
slave3

9.2使用start-dfs.sh启动集群,并观察结果

image.png

以上需要每个节点的密码都需要重新输入一下
启动成功:

NameNode.png
DataNode.png

9.3使用stop-dfs.sh停止集群

image.png

停止集群也需要每次输入密码

10.配置SSH免密登录

在上一步骤中,每次都需要输入密码,非常麻烦,故需要配置一下SSH的免密登录。
执行如下步骤:

cd
ls -la
cd .ssh
ssh-keygen -t rsa (四个回车)
image.png

会用rsa算法生成私钥id_rsa和公钥id_rsa.pub

image.png

利用ssh-copy-id slaveX命令把生成的公钥copy到其他的节点上。

image.png

此时在yxxy-node2节点就可以有以下文件:

image.png

以此类推,其他两个从节点也是这样执行即可。
再次ssh slave1

image.png

此时应该不再需要密码
重新使用start-dfs.sh启动集群

image.png

此时执行启动命令,则还是需要输入主节点的密码,故也需要把公钥拷贝一份到自己的主节点上

image.png

停止集群stop-dfs.sh

image.png

11.web管理

修改windows中的C:\Windows\System32\drivers\etc\hosts文件,可以通过名字访问集群web界面。

image.png

12.基本操作

12.1使用hdfs dfs 或者hadoop fs命令对文件进行增删改查的操作

hadoop fs -ls /
hadoop fs -put file /
hadoop fs -mkdir /dirname
hadoop fs -text /filename
hadoop fs -rm /filename
基本操作.png

12.2 动态扩展

设定dfs.namenode.heartbeat.recheck-interval为10000,然后停掉其中一台slave,观察自动复制情况。
启动停掉的slave节点,通过网页观察datanode的动态添加

12.3 横向扩展

添加新的节点,体会hadoop的横向扩展,步骤如下:

启动slave4,关闭防火墙,修改hostname
修改etc/hosts,加入对自己以及其他机器的解析,重启网络
在master中设定对于slave4的解析
启动slave4的datanode,通过网页进行观察
hdfs dfsadmin –shutdownDatanode slave4:50020

13.遇到问题

在启动集群的时候,主节点(namenode)正常启动,datanode启动2个,一个未启动,查看日志显示如下异常信息:

image.png

经过网上查询原因说是/etc/hosts中的第一第二行不能删除。把他加上即可,如下图所示:

image.png

推荐阅读更多精彩内容