最近读了吴军博士的《智能时代》,很想要学习大数据,正好选了云计算的课程,可以摸索前进。
先介绍一下,Hadoop的三种分布模式:
1. 单机模式:这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。
2.伪分布式:指Hadoop运行在一个计算机上,即当NameNode,又当DataNode,或者说既是JodTracker,又是TaskTracker。没有所谓的在多台计算机上进行的真正的分布式运算,故称“伪分布式”。
3. 完全分布式:Hadoop对应的多个Java进程运行在不同的物理机上。
下面详细解说Hadoop完全分布式的搭建过程。
1.安装VMware workstations。
2.在安装好的VMware中安装Linux虚拟机,Ubuntu16.04,只需要安装一个即可,后期的话,可以用克隆方式增加个数。
3.在安装好的Linux虚拟机上安装JDK环境,首先用tar -zxvf jdk-8u111-linux-x64.tar.gz,之后将解压后的包移动到/usr/local
配置JDK环境:用sudo gedit /etc/profile 打开profile文件,在文件末尾添加如下:
export JAVA_HOME=/usr/local/jdk1.8.0_111
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
之后用source /etc/profile命令保存profile文件,使用java -version查看JDK配置结果
hadoop@master:~$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
4.配置Hadoop环境,同样解压Hadoophadoop-2.7.0.tar.gz,放置/usr/local中
配置Hadoop环境:用sudo gedit /etc/environmen,在文件末尾添加PATH和HADOOP_INSTALL环境变量如下图:
用source命令保存之后,用hadoop version命令查看Hadoop配置结果如下:
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using /usr/local/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar
5.配置Hadoop中的配置文件
主要配置四个文件,在Hadoop2.7.3/etc/hadoop中分别为core-site.xml hdfs-core.xml yarn-site.xml mapred-site.xml.template
同样用sudo gedit命令打开xml文件
(1)core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
输入如上所述的属性,就是配置了集群的master节点。注意,此处的master是我们作为集群主要节点的计算机名称,我的master节点的计算机名称就是master.
(2)hdfs-core.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
这里是配置有多少个datanode节点,这里默认为master节点就是NameNode节点,slave节点就是datanode节点。我们这里有两个datanode节点。
(3)yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
上面是设置hostname为master
(4)mapred-site.xml.template
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)配置slaves文件,同样sudo gedit打开该文件,配置如下
slave1
slave2
告诉master机器节点是什么
(6)配置hadoop-env.sh文件
将JAVA_HOME换成/usr/local/jdk1.8.0_111
6.配置ssh免密登录
首先通过命令 sudoapt-get install ssh 安装ssh
接下来用命令ssh-keygen -t rsa生成本机密钥,一路回车就好
用命令cat id_rsa.pub >> authorized_keys进行授权
配置好了之后可以用ssh localhost用来测试,如果无需密码弹出如下信息则配置成功
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)
* Documentation: https://help.ubuntu.com/
302 packages can be updated.
4 updates are security updates.
*** System restart required ***
Last login: Sat Dec 3 06:16:02 2016 from 127.0.0.1
7.克隆虚拟机两份,作为slave节点
8.修改主机名称
使用sudo gedit /etc/hostname修改主机名称,主机为master。其余的两台分别为slave1和slave2
9.修改hosts
同样用sudo gedit /etc/hosts ,修改内容如下,其中IP可以使用ifconfig命令查看
192.168.71.134 master
192.168.71.135 slave1
192.168.71.136 slave2
三台虚拟机都要修改
至此,Hadoop的配置环境就建立好了
验证:在master节点中格式化namenode节点
hadoop namenode -format
之后启动hadoop集群
start-all.sh
之后可以使用jps命令查看每台机器上的Java进程
master节点:
30976 Jps
29922 NameNode
30134 SecondaryNameNode
30286 ResourceManager
slave1节点:
2567 Jps
2346 NodeManager
2171 DataNode
slave2节点:2306 NodeManager
2107 DataNode
2557 Jps