hadoop2.3.0+hive0.12.0+hbase0.98.1环境搭建和使用参考南京老谢xieyeting@126.com1说明本文档里的服务器,目录,账户等都为示范,可以根据各自的需求进行修改,只需所有配置上下文保持一致即可。文档主要描述了面向处理大数据环境的hadoop+hive+hbase组合的安装配置,目的为减少搭建环境时能少走点弯路和起到点初级阶段的参考作用;大数据的处理博大精深,要深入了解其中精髓,需一起学习探讨。2版本准备下载地址:根据cdh的版本号来下载,下载的安装包都同一个cdh版本号,这样确保所有安装包没有版本兼容问题,否则会有各种各样的报错,可少走不少弯路。如下图:图下载页面最终收集到的所需要的安装版本文件如下图所示:图下载后的版本示意3环境准备3.1环境准备由于条件有限,物理机器只有2台,就配置基于台2物理机的hadoop集群,用2个节点作为示例:1个Master,1个Salve,节点之间局域网连接,可以相互ping通。一台作为hadoop的namenode,一台作为datanode。如下:132.228.25.30jskhjfapp01作为namenode——master132.228.25.31jskhjfapp01作为datanode——slaves操作系统为LinuxRedhat.Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器。3.2目录结构创建账号:使用root登陆所有机器后,2台创建xieyt用户(后面都以该账号作为实验,大家可以根据自己的需要创建),密码也为xieytuseraddxieytpasswdxieyt此时在/home/下就会生成一个xieyt目录,目录路径为/home/xieyt,如图:创建相关的目录定义需要数据及目录的存放路:mkdir/home/xieyt/source定义代码及工具存放的路径:mkdir/home/xieyt/tools定义数据节点存放的路径到跟目录下的hadoop文件夹,这里是数据节点存放目录需要有足够的空间存放mkdir/home/xieyt/hdfsmkdir/home/xieyt/tmpmkdir/home/xieyt/log设置可写权限chmod-R777/home/xieyt定义java安装程序路径mkdir/home/xieyt/jdk最后如图所示:3.3安装jdk上传jdk1.6以上版本,建议1.7以上。这里使用jdk1.8的版本:解压jdk:tar–xvfjdk-8u11-linux-x64.tar.gz解压后,配置环境变量:cdls-avi.bash_profile在末尾添加:exportJAVA_HOME=/home/xieyt/jdk/jdk1.8.0_11exportCLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexportPATH=$JAVA_HOME/bin:$PATH如图:当然,这几行如果使用root用户,添加在/etc/profile文件末尾效果也一样。退出重新登录后即可见生效,可以执行java–version来查看是否按照java成功:如上步骤,在所有参与hadoop集群的集群上都要安装。3.4修改主机名该步骤主要便于理解机器意义,可根据需要进行,后续配置如果使用ip,不使用主机名称,则可以跳过不配置。1.连接到主节点132.228.25.30,修改network,(root用户下执行)执行vi/etc/sysconfig/network,修改HOSTNAME=jskhjfapp01连接到主节点132.228.25.31,修改network,(root用户下执行)执行vi/etc/sysconfig/network,修改HOSTNAME=jskhjfapp022.修改hosts文件,(root用户下执行)执行cd/etc命令后执行vihosts,在行末尾添加:132.228.25.30jskhjfapp01132.228.25.31jskhjfapp02执行hostnamejskhjfapp01执行exit后重新连接可看到主机名以修改OK其他节点也修改主机名后添加Host,或者host文件可以在后面执行scp覆盖操作。3.5配置SSH无密码登录SSH无密码原理简介:a.首先在jskhjfapp01上生成一个密钥对,包括一个公钥和一个私钥,并将公钥复制到所有的slave(jskhjfapp02)上。b.然后当master通过SSH连接slave时,slave就会生成一个随机数并用master的公钥对随机数进行加密,并发送给master。c.最后master收到加密数之后再用私钥解密,并将解密数回传给slave,slave确认解密数无误之后就允许master不输入密码进行连接了。具体步骤(xieyt用户下执行)1、执行命令ssh-keygen-trsa之后一路回车,查看刚生成的无密码钥对:cd.ssh后执行ls-l2、把id_rsa.pub追加到授权的key里面去。执行命令cat~/.ssh/id_rsa.pub~/.ssh/authorized_keys3、修改权限:执行chmod600~/.ssh/authorized_keys4、确保cat/etc/ssh/sshd_config中存在如下内容:RSAAuthenticationyesPubkeyAuthenticationyesAuthorizedKeysFile.ssh/authorized_keys如需修改,则在修改后执行重启SSH服务命令使其生效:servicesshdrestart5、将公钥复制到slave机器上:scp~/.ssh/id_rsa.pub132.228.25.31:~/然后输入yes,最后输入slave机器的密码6、在slave机器上创建.ssh文件夹:mkdir~/.ssh然后执行:chmod700~/.ssh(若文件夹已存在则不需要创建)7、追加到授权文件authorized_keys执行命令:cat~/id_rsa.pub~/.ssh/authorized_keys然后执行chmod600~/.ssh/authorized_keys8、重复第4步9、验证命令:在master机器上执行ssh132.228.25.31发现主机名由jskhjfapp01变成jskhjfapp02即成功(如下图),最后删除id_rsa.pub文件:rm-rid_rsa.pub效果如图:按照以上步骤分别配置所有slave,要求每个都可以从master无密码登录。4安装配置hadoop此处介绍的是完全分布式模式的安装。4.1安装文件把下载文件ftp上传到/home/xieyt/source目录下到source目录下,解压安装包:tar–xvfhadoop-2.3.0-cdh5.1.0.tar.gz然后把解压后的目录移到上一层目录,并改名为hadoop(名字随意,也可以带上版本号),mvhadoop-2.3.0-cdh5.1.0../hadoop4.2环境变量配置环境变量(用root用户):vi/etc/profileexportHADOOP_DEV_HOME=/home/xieyt/hadoopexportPATH=$PATH:$HADOOP_DEV_HOME/binexportPATH=$PATH:$HADOOP_DEV_HOME/sbinexportHADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}exportHADOOP_COMMON_HOME=${HADOOP_DEV_HOME}exportHADOOP_HDFS_HOME=${HADOOP_DEV_HOME}exportYARN_HOME=${HADOOP_DEV_HOME}exportHADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoopexportHDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoopexportYARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop注:以上配置的修改,在datanode上也要配置一致。创建并配置hadoop-env.shvi/home/xieyt/hadoop/etc/hadoop/hadoop-env.sh在末尾添加exportJAVA_HOME=/home/xieyt/jdk/jdk1.8.0_114.3配置修改配置/home/xieyt/hadoop/etc/hadoop/core-site.xmlvicore-site.xml配置结果如下:configurationpropertynamehadoop.tmp.dir/namevalue/home/xieyt/tmp/valuedescriptionAbaseforothertemporarydirectories./description/propertypropertynamefs.default.name/namevaluehdfs://132.228.25.30:9000/value/propertypropertynamehadoop.proxyuser.root.hosts/namevalue132.228.25.30/value/propertypropertynamehadoop.proxyuser.root.groups/namevalue*/value/property/configuration配置/home/xieyt/hadoop/etc/hadoop/slavesvislaves添加slave的ip配置/home/xieyt/hadoop/etc/hadoop/hdfs-site.xmlvihdfs-site.xml修改配置结果如下:configurationpropertynamedfs.replication/namevalue1/value!—由于我们只有一台机器,就配置成1,一般是配置成文件备份3份--/propertypropertynamedfs.namenode.name.dir/namevaluefile:/home/xieyt/hdfs/name/valuefinaltrue/final/propertypropertynamedfs.federation.nameservice.id/namevaluens1/value/propertypropertynamedfs.namenode.backup.address.ns1/namevalue132.228.25.30:50100/value/propertypropertynamedfs.namenode.backup.http-address.ns1/namevalue132.228.25.30:50105/value/propertypropertynamedfs.federation.nameservices/namevaluens1/value/propertypropertynamedfs.namenode.rpc-add