Hadoop,zookeeper,HBase,Spark集群环境搭建【面试+工作】 文详细讲解如何搭建hadoop、zookeeper、hbase和spark的集群环境,这里我是在本地虚拟机上搭建的集群,但是和实际环境的配置差不多。我会从零开始搭建并且尽量写得详细,所以还会讲到很多配置linux环境的东西,希望大家不要烦,务必按照步骤一步步做下去。 Linux系统的一些基础配置 安装jdk 配置SSH免登陆 hadoop的安装和配置 zookeeper集群的安装配置 hbase的安装和配置 spark的安装和配置 这个很easy,软件和操作步骤请自行搜索,我安装的ubuntu系统,三个主机的名称分别是master、slave1、slave2,用户名统一都是trigl,后面设置ssh免登录需要用户名是相同的否则就会出错。后面的很多配置这三台主机都是相同的,直接复制配置文件即可,这里教大家一下不同主机之间传输文件(文件夹)的命令: 如将master的jdk的tar包传给slave1,命令如下: xshell用于连接linux系统并输入命令,xftp用于向linux系统传输文件,安装比较简单,请自行搜索。 这是由于新装的系统没有ssh服务,使用下面命令下载安装: 安装完成以后用xshell就可以连接上了 使用ubuntu自带的vi来编辑文件的时候,方向键会变成ABCD,解决方法如下: 1、修改hosts文件 添加下面内容: 这样就配置好了域名,在后面配置需要ip时我们可以直接用域名来方便地替换ip。 2、修改主机名 注意主机名和hosts文件中设置的名称应当保持一致,否则会产生意外的错误 1、关闭命令 2、查看防火墙状态 为了保证集群内的时间是一致的,我们可以将其中的一台主机作为时间服务器,其他主机设置定时任务每天与时间服务器同步一次时间 1、安装ntp 2、修改配置文件/etc/ntp.conf 3、手动同步 4、启动服务 5、开机启动 1、安装ntp 2、修改配置文件/etc/ntp.conf 3、安装使用定时器crontab 微信公众号中搜索此文章 4、编辑定时器任务 添加如下内容: Linux默认有一个最大线程数,线程数不能超过这个值,可以使用以下命令查看: 默认是1024,hadoop集群跑任务的时候会需要同时创建很多线程,有时候会超过1024,所以最好将该参数改的大一点 1、修改文件/etc/security/limits.d/90-nproc.conf 2、修改文件/etc/security/limits.conf,添加内容: 1、新建应用的安装目录 2、更改该安装目录所属用户和组 对slave1和slave2做相同操作,更改用户和组以后对该目录就有了所有权限,后续输入命令不再需要加sudo了 hadoop等的搭建都依赖于jdk,所以需要先安装jdk 1、到官网下载jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html,我下载的是 jdk-7u75-linux-x64.tar.gz 2、下载好的tar包放在 /data/install/java 目录并解压: 3、配置环境变量 在里面添加如下内容: 4、使环境变量立刻生效: 关于为什么需要配置SSH免登陆请看SSH免密详解文章 1、生成SSH的公钥,命令如下,三台主机都要执行一次: 让输入内容直接回车即可,执行以后会在 /home/trigl/.ssh/(家目录/.ssh) 下生成id_rsa和id_rsa.pub文件 2、将主机slave1和slave2在上一步骤生成的id_rsa.pub文件传到主机master的 /home/trigl/.ssh/ 下面,为了防止覆盖,重命名为id_rsa.pub.slave1和id_rsa.pub.slave2 3、在主机master的 /home/trigl/.ssh/ 目录下分别将id_rsa.pub、id_rsa.pub.slave1和id_rsa.pub.slave2追加到authorized_keys文件中 这样就生成了一个可以同时验证master、slave1和slave2的公钥文件 4、将上一步生成的authorized_keys文件分别传到slave1和slave2的/home/trigl/.ssh/下面 5、验证 如果没有让输入密码且成功切换到slave1的终端,说明配置成功,验证连接slave2类似 2016.11.25更新:注意如果是在Centos系统下还需要更改文件权限 1、下载hadoop 下载完成后进行解压: 2、配置hadoop 需要修改的配置文件为:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、slaves、hadoop-env.sh、yarn-env.sh core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml 通过cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml创建etc/hadoop/mapred-site.xml,内容改为如下: slaves hadoop-env.sh和yarn-env.sh 配置文件修改完以后,将master下hadoop文件夹复制到slave1和slave2中 3、运行hadoop 启动hadoop的命令都在master上执行 (1)初始化hadoop(清空hdfs数据): (2)启停hdfs: 验证是否启动成功,在master输入 jps,应当存在namenode和secondary namenode 在slave1和slave2输入jps,应当存在datanode 进一步验证,访问:http://192.168.79.131:50070/dfshealth.html(192.168.79.131是master的ip),如图: (3)启停yarn 在master输入 jps,应当存在resourcemanager 在slave1和slave2输入jps,应当存在nodemanager 访问:http://192.168.79.131:8088/cluster (4)启停JobHistory(查看MapReduce任务) 在master输入 jps,应当存在JobHistory 1、下载 2、配置 (1)建立数据目录 (2)进入conf目录创建并修改zoo.cfg文件 修改以后的内容为: 这里还需要在数据目录/data/install/apache/zookeeper-3.4.9/data下面新建名为myid的文件,各个主机对应的内容是不同的,master的内容是0,slave1的内容是1,slave2的内容是2,分别对应server.x中的x (3)设置环境变量:/etc/profile添加如下内容 别忘了source一下让环境变量生效 3、启停zookeeper 在各个节点执行以下命令: 输入jps检测一下: 查看各个主机的状态: 这里如果报错: bin/zkServer.sh: 81: /data/install/apache/zookeeper-3.4.9/bin/zkEnv.sh: Syntax error: "(" unexpected (expecting "fi") 搜索文章查看详情: 1、下载 2、配置 主要修改conf目录下的三个文件:hbase-env.sh、hbase-site.xml、regionservers hbase-env.sh hbase-site.xml regionservers 2016.11.25更新:还需要同步集群时间,否则有的从节点无法启动,在每个节点上运行ntp即可 3、启停hbase master输入jps: slave1和slave2输入jps: 访问:http://192.168.79.131:16010 4、hbase的一些基本命令 首先进入hbase shell (1)创建表 (2)添加记录 (3)查看记录 (4)查看表中的记录总数 (5)删除记录 (6)删除一张表 (7)查看所有记录 1、下载 2、配置 创建并修改conf目录下的配置文件 spark-env.sh,slaves spark-env.sh 修改内容为: slaves 修改内容为: 3、启停spark 在master上输入jps: 在slave1和slave2上输入jps: 访问:http://192.168.79.131:8080/ 以上,就完成了整个集群环境的搭建 |
|