引言
大数据已经是当今这个时代非常非常热的一个技术方向,所有的行业都在利用大数据提升业务,包括很多的实体行业,制造企业,都希望利用现有的数据、亦或是可以爬取的数据。挖掘出更多的商业价值。曾经我的驾校教练就和我说过一个场景,能不能利用大数据和人工智能的技术手段,来分析当地有比较大意向想要学车,考驾照,买车的人。然后把驾校的招生信息或者广告直接通过一定的渠道(短信、邮件、电话、某某贴吧、论坛、app等等方式),推送给意向准客户。我们都知道任何的技术项目,研发就是为了提升业务降低成本,特别是传统的研发,降低成本就是最最核心的目的。因为前期的:市场调研、业务产品规划、战略部署等更多的是拓展市场以及竞争对手的分析。有点扯远了。回到大数据,首先得有一个好的框架工具,那就是今天要介绍的Hadoop。同时要基于Hadoop来做大数据开发,就必须把环境给搭建起来。
CentOS虚拟机
1. VMware安装
VMware的安装就不说了,很简单下一步、下一步就好了。 下载地址:www.vmware.com/products/wo… VMware 14的版本,我用的是windows版本。
2. CentOS安装机器NAT网络配置
CentOS使用6.5的版本
-
CentOS 镜像选择
选择下载好的系统镜像,点击下一步。 -
硬盘大小配置
这里磁盘大小可以用20G,当然你的硬盘大出天际,也不妨碍你设置个1P,哈哈哈。最小不小于5G,不然后期不够用。 选择将虚拟磁盘存储为单个文件,这个是为了方便将创建好的虚拟机移植到其它的电脑,就是俗称的“我把电脑拷贝的别人家”。 -
自定义硬件配置
-
等待完成安装
-
NAT网络配置
接下来配置虚拟机的网络,点击编辑---选择“虚拟网络编辑器”
选中VMnet8-->点击移除网络-->然后点击添加网络。 同样选择VMnet8,VM会自动为我们分配一个子网。 子网分配后,同样会出现一个VMnet8的子网项,分配的网段是241。然后选择使用NAT模式,点击“NAT设置”,可以查看到子网的信息:ip:192.168.241.0、 子网掩码:255.255.255.0、 网关:192.168.241.2
这些后面配置的时候都需要用到,先做一个记录
点击右下角那个电脑图标的设置,先把网络适配器切换为 桥接模式,确定后,在点击电脑图标的设置,切换回NAT模式,这样来初始化虚拟机网络。终端输入命令:
-
进入cd /etc/sysconfig/network-scripts
-
vim ifcfg-eth0
-
将ip、子网掩码、网关等信息输入并保存
-
输入/etc/init.d/network restart,重启网络服务。
-
ping www.baidu.com, 如下图表示可以访问网络。
3. 命令行神器SecureCRT的使用
直接操作VM虚拟机着实麻烦,使用SecureCRT命令行神器,连接虚拟机,可以很方便的操作。 安装好SecureCRT后,打开Session Manager-->New Session-->降master的机子的ip做为host输入,用户名是你配置的。连接的时候会要求输入密码,单机save password,方便以后连接无需再次输入密码。
4. 配置两台从节点slave机器
很简单,先挂起master主节点虚拟机,然后找到虚拟机本地磁盘的路径文件夹,复制两个文件夹并重命名如下图:
然后打开两个从节点虚拟机,分别修改两个从节点虚拟机的/etc/sysconfig/network-scripts下的ifcfg-eth0文件的ip为:slave1(ip:192.168.241.11)、slave21(ip:192.168.241.12) 因为是复制master节点,所以两个从节点的网卡物理地址是同一个,可以通过VMware的又是神奇的右下角电脑小图标的设置,先移除网络适配器(网卡),然后添加过网络适配器。切换成“桥接模式”,确认后等待小图标再次亮起,再次点击电脑小图标的设置,将网络适配器连接改成“NAT模式”。这样就完成了NAT模式网卡的服务的重新初始化。 最后分别使用:ping www.baidu.com测试从节点机器是否都能上网。同样的,在SecureCRT中,新建两个从节点的session机器。步骤和3master的一样。
jdk的安装
jdk我用的是 1.8版本,这个可以去oracle官方下载。首先要将Windows下的文件拷贝到CentOS中,需要有一个共享文件夹。 选择电脑小图标设置,在选项的共享文件夹,启用文件共享并添加共享文件。
-
通过 cp拷贝命令将jdk1.8的压缩包拷贝到/usr/local/src/java目录下,首先创建java目录:
mkdir /usr/local/src/java
cp jdk* /usr/local/src/java
拷贝完成后,进入/usr/local/src/java通过tar -zxvf jdk*命令解压jdk的压缩包。 -
编辑配置jdk环境变量
vim ~/.bashrc
export JAVA_HOME=/usr/local/src/java/jdk1.8.0_181
export CLASSPATH=:$CLASSPATH:$JAVA_HOME/lib
export PATH=:$PATH:$JAVA_HOME/binsource ~/.bashrc更新环境变量文件(这个文件表示当前用户组的环境变量)
-
配置从节点jdk及其环境变量
把解压的jdk文件拷贝到另外两个从节点:
- scp -rp /usr/local/src/java 192.168.241.11:/usr/local/src/
(使用scp 远程服务器拷贝命令,将java文件夹拷贝到192.168.241.11这个ip的从节点即slave1的/usr/local/src/目录下) - scp -rp /usr/local/src/java 192.168.241.12:/usr/local/src/
拷贝到slave2节点机器 - 同样修改~/.bashrc的环境配置,再通过source ~/.bashrc命令更新环境变量。如下图表示jdk环境安装成功。
- scp -rp /usr/local/src/java 192.168.241.11:/usr/local/src/
hadoop集群安装
1. hadoop安装配置
- 同样和jdk安装配置一样,将hadoop2.6.1压缩包拷贝到/usr/local/src/hadoop/目录下,并解压。
- 修改配置文件hadoop的etc目录
-
在/usr/local/src/hadoop/hadoop-2.6.1目录下新建tmp文件夹、dfs/name、dfs/data等文件夹。
-
修改配置文件:
vim hadoop-env.sh
export JAVA_HOME=/usr/local/src/java/jdk1.8.0_152
vim yarn-env.sh
export JAVA_HOME=/usr/local/src/java/jdk1.8.0_152
vim slaves
slave1
slave2vim core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.241.10:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/src/hadoop/hadoop-2.6.1/tmp</value> </property> </configuration> 复制代码
vim hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/src/hadoop/hadoop-2.6.1/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/src/hadoop/hadoop-2.6.1/dfs/data</value> </property> <property> <name>dfs.repliction</name> <value>3</value> </property> </configuration> 复制代码
vim mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 复制代码
vim yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration> 复制代码
-
将hadoop加入环境变量
vim ~/.bashrc
export HADOOP_HOME=/usr/local/src/hadoop/hadoop-2.6.1
export PATH=$PATH:$HADOOP_HOME/binsource ~/.bashrc 更新环境变量
2. 集群机器节点网络配置
将三台机器的网络配置到各自的/etc/hosts文件中。
192.168.241.10 master
192.168.241.11 slave1
192.168.241.12 slave2
同时将三台机器的域名:master、slave1、slave2配置到网络文件中
vim /etc/sysconfig/network
HOSTNAME=master
HOSTNAME=slave1
HOSTNAME=slave2
并使用hostname和bash命令然后上面域名生效,如下图:
3. 机器节点之间相互免密登录切换配置
-
关闭所有机器节点的防火墙,避免启动hadoop出现不必要的错误,难以排查问题
/etc/init.d/iptables stop
setenforce 0 -
建立机器节点间的互信免密登录
ssh-keygen
cd ~/.ssh (进入隐藏的ssh目录) -
将id_rsa.pub公钥文件中的加密字符串拷贝到authorized_keys文件中。
将其它节点机器的ssh的id_rsa.pub公钥文件中的加密字符串拷贝到authorized_keys文件中。这里我的集群有三台节点机器,那就authorized_keys文件中有三个加密字符串,如下图:
-
验证是否通过ssh互信免费登录成功
ssh slave1
4. hadoop环境运行测试
-
启动集群,初始格式化Namenode
hadoop namenode -format
./start-all.sh
-
检查集群进程是否都起来
jps命令
master
slave1
slave2
这样表示hadoop分布式集群环境搭建成功!!!