[原创] Hadoop 集群环境安装手册时间:2022-09-19 09:15:41# Hadoop 集群环境安装手册 [TOC] ## 一、JDK安装 ### 1.1 JDK1.8下载 到oracle官网下载[jdk-8u101-linux-x64.tar.gz](http://download.oracle.com/otn-pub/java/jdk/8u101-b14/jdk-8u101-linux-x64.tar.gz?AuthParam=1483251511_04673c3489fc71bc4768a7cc206b3ae4) 先查找并卸载自带openJDK ```shell rpm -qa |grep openjdk yum -y remove *openjdk* ``` 解压[jdk-8u101-linux-x64.tar.gz](http://download.oracle.com/otn-pub/java/jdk/8u101-b14/jdk-8u101-linux-x64.tar.gz?AuthParam=1483251511_04673c3489fc71bc4768a7cc206b3ae4)到安装目录,如果没有特别说明,全文中安装目录都是指/data0/soft/ ```shell remove jdk-8u101-linux-x64.tar.gz /data0/soft/ cd /data0/soft tar zxvf jdk-8u101-linux-x64.tar.gz mv jdk-8u101-linux-x64.tar.gz java ``` 配置JAVA_HOME ``` echo '## java configuration ' >> /etc/profile echo 'export JAVA_HOME=/data0/soft/java' >> /etc/profile echo 'export PATH=.:$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile ``` 验证是否安装成功 ```shell java -version ``` ## 二、Zookeeper安装 ### 2.1 Zookeeper下载准备 去Zookeeper官网或者用wget下载安装包[zookeeper-3.4.9.tar.gz](http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz) ### 2.2 Zookeeper安装配置 把[zookeeper-3.4.9.tar.gz](http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz)移动到安装目录并解压 ```shell mv zookeeper-3.4.9.tar.gz /data0/soft/ cd /data0/soft tar zxvf zookeeper-3.4.9.tar.gz mv zookeeper-3.4.9 zookeeper ``` 编辑并保存zoo.cfg,配置文件如下 ```shell vi /data0/soft/zookeeper/conf/zoo.cfg #重新写入以下配置 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data0/soft/zookeeper clientPort=2181 server.1=dmp1:2888:3999 server.2=dmp2:2888:3999 server.3=dmp3:2888:3999 ``` 编辑hosts文件,对应server.*的主机名 ```shell vi /etc/hosts #写入集群主机名映射关系 10.20.26.30 dmp1 10.20.26.31 dmp2 10.20.26.32 dmp3 ``` 在dataDir下新增文件myid,填写值为server.*对应的编号 ```shell echo '1'>/data0/soft/zookeeper/myid ``` 添加Zookeeper环境变量 ```shell echo '## zk configuration ' >> /etc/profile echo 'export ZOOKEEPER_HOME=/data0/soft/zookeeper' >> /etc/profile echo 'export PATH=$ZOOKEEPER_HOME/bin:$PATH' >> /etc/profile source /etc/profile ``` 启动Zookeeper并查看状态,可以看到节点是leader还是follower ```shell zkServer.sh start zkServer.sh status ``` ## 三、Hadoop安装 ### 3.1 Hadoop下载准备 这里用下载的hadoop-2.6.0-cdh5.5.0.tar.gz(!注:其中的配置文件是已经配置过的,只需要改成对应集群的名称及目录路径即可) 如果只有一块磁盘,该文档中的data0、data1都指data目录 ### 3.2Hadoop集群规划 | hostname | ip | 安装组件 | | -------- | ---- | ---------------------------------------- | | dmp1 | | Namenode/ResourceManager/journalNode/zkfc/jobhistoryServer /timeLineServer/proxyServer/metastore/hiveSerer2 | | dmp2 | | namenode/ResourceManager/journalNode/zkfc | | dmp3 | | DataNode/NodeManager/journalNode | | dmp4 | | DataNode/NodeManager | | dmp5 | | DataNode/NodeManager | | dmp6 | | DataNode/NodeManager | | ... | | DataNode/NodeManager | ### 3.2系统配置 ```shell #### 3.2.1修改hosts文件#### dmp1 xx.xx.xx.xx dmp2 xx.xx.xx.xx ... ``` 修改所有节点的hosts文件,添加ip和集群列表中对应hostname #### 3.2.2修改hostname 修改所有节点的/etc/sysconfig/network文件,修改对应的hostname,重启生效 #### 3.2.3关闭防火墙 ```shell service iptables off //如果局域网内端口不设防火墙则不需要关闭 ``` #### 3.2.4修改linux参数 修改所有节点文件:/etc/selinux/config,修改SELINUX=disabled 修改所有节点文件打开数量:/etc/security/limits.conf,增加一行内容 : * - nofile 1024000 修改所有节点最大进程数:/etc/security/limits.d/90-nproc.conf,增加一行:* - nproc 262144 修改所有节点内存配置:/etc/sysctl.conf,改为: ```properties vm.overcommit_memory=1 vm.swappiness=0 #*# 1 net.core.somaxconn=32768 ``` 关闭THP: ```shell #*# 2 echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag ``` #### 3.2.5新增用户 新增用户hadoop,并将hadoop添加到hadoop组 ```shell useradd hadoop useradd hadoop usermod -a -G hadoop hadoop passwd hadoop Paic1234 ``` 将每个节点的数据磁盘路径权限设为775,这里假设每个磁盘挂载目录为data0,data1..data* ```shell chmod -R 775 /data0 chmod -R 775 /data1 ``` #### 3.2.6添加节点间hadoop用户免密登陆 在dmp1上用hadoop用户执行 ```shell ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //在每一个从节点执行 ssh-copy-id -i dmp1,将公钥发送到主节点 //将公钥文件发送到各节点 for i in {2..6};do scp ~/.ssh/authorized_keys hadoop@dmp$i:~/.ssh/;done; //配置known_hosts验证关闭 vi /etc/ssh/ssh_config StrictHostKeyChecking no ``` #### 3.2.7解压安装hadoop 将安装包hadoop-2.6.0-cdh5.5.0.tar.gz解压到/data0/soft,**注意**,如果安装包根目录native目录为空则需要去下载编译native文件。 设置环境变量到~/.bashrc ```shell export HADOOP_HOME=/data0/soft/hadoop export HIVE_HOME=/data0/soft/hive export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin ``` #### 3.2.8创建工作目录 为每个节点创建用户工作目录:/data0/hadoop/ 创建hdfs工作目录:/data0/hadoop/dfs、/data0/hadoop/dfs/logs、/data0/hadoop/dfs/pid 创建hive工作目录:/data0/hadoop/hive、/data0/hadoop/hive/logs ### 3.3Hadoop配置 #### 3.3.1修改core-site.xml | name | value | 描述 | | -------------------------- | ----------------------------- | ---------------------------------------- | | fs.defaultFS | hdfs://dmp | 这里的值指的是默认的HDFS路径。 | | hadoop.tmp.dir | /data0/hadoop/tmp | 这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录 | | ha.zookeeper.quorum | dmp1:2181,dmp2:2181,dmp3:2181 | 这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点 | | fs.trash.interval | 2880 | 设置回收站保存时间 | | hadoop.proxyuser.dmp.hosts | * | 指定有访问权限的地址 | | hadoop.proxyuser.dmp.group | * | 指定有访问权限的用户组 | #### 3.3.2修改hdfs-site.xml | name | value | 描述 | | -------------------------------------- | ---------------------------------------- | ---------------------------------------- | | dfs.replication | 3 | 指定DataNode存储block的副本数量 | | dfs.namenode.name.dir | file:///data0/hdfs/name | 指定namenode元数据信息存储位置 | | dfs.datanode.data.dir | file:///data0/hdfs/data,file:///data1/hdfs/data,file:///data2/hdfs/data,.. | 指定datanode元数据信息存储位置, 设置成所有的磁盘; 测试环境中如果是只有一个盘就只写一个盘 | | dfs.nameservices | dmp | Hdfs的集群名称,自己定 | | dfs.ha.namenodes.dmp | dmp1,dmp2 | 指定NameService是dmp时的namenode有哪些,这里的值也是逻辑名称,名字随便起,相互不重复即可 | | dfs.namenode.rpc-address.dmp.dmp1 | dmp1:9000 | 指定rm1的RPC地址 | | dfs.namenode.http-address | 0.0.0.0:50070 | 指定http地址 | | dfs.namenode.rpc-address.dmp.dmp2 | dmp2:9000 | 指定rm2的RPC地址 | | dfs.journalnode.http-address | 0.0.0.0:8480 | 指定journalnode http | | dfs.namenode.shared.edits.dir | qjournal://dmp1;dmp2;dmp3/dmp | 指定dmp的两个NameNode共享edits文件目录时,使用的JournalNode集群信息 | | dfs.ha.automatic-failover.enabled | true | 即当NameNode出故障时,是否自动切换到另一台NameNode | | dfs.client.failover.proxy.provider.dmp | org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider | 指定NameNode出故障时,哪个实现类负责执行故障切换 | | dfs.journalnode.edits.dir | /data0/hdfs/journal | 指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径 | | dfs.ha.fencing.methods | sshfence | (说明:如果节点的22端口改了,请标明改成什么端口, hadoop2是用户名, 36102是节点端口sshfence(hadoop2:36102) | | dfs.ha.fencing.ssh.private-key-files | /home/hadoop/.ssh/id_rsa | 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 | | dfs.permissions | false | 是否开启hdfs访问权限验证 | #### 3.3.3修改文件yarn-site.xml | key | value | desc | | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | | yarn.resourcemanager.ha.enabled | true | 打开resourcemanager ha模式 | | yarn.resourcemanager.cluster-id | yarn-ha-cluster | 设置resourcemanager ha的集群名称,进程启动后这个名称可以在zookeeper中查看 | | yarn.resourcemanager.ha.rm-ids | rm1,rm2 | 设置resourcemanager的id,可以与主机同名, 本例子与主机同名 | | yarn.resourcemanager.hostname.rm1 | dmp1 | 指定rm1对应哪一台主机 | | yarn.resourcemanager.hostname.rm2 | dmp2 | 指定rm2对应哪一台主机 | | yarn.resourcemanager.zk-address | dmp1:2181,dmp2:2181,dmp3:2181 | 设置zkurl | | yarn.nodemanager.aux-services | mapreduce_shuffle | 用什么方式进行数据传递 | | yarn.log-aggregation-enable | true | | | yarn.log.server.url | http://dmp1:19888/jobhistory/logs/ | 设置jobhistory的地址。 在这个地址有 | | yarn.resourcemanager.scheduler.class | org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler | 设置调 度器,不设就用默认。默认也可以 | | yarn.resourcemanager.scheduler.monitor.enable | true | 支持资源抢占 | | yarn.nodemanager.local-dirs | file:///data0/dfs/nm-local-dir,file:///data1/dfs/nm-local-dir,.. | | | yarn.nodemanager.resource.memory-mb | 20480 | nodeManager可分配的内存大小,设置成比总内存略小。120g的机器设置成110g | | yarn.nodemanager.resource.cpu-vcores | 32 | 设置nodemanager节点内存大小,CPU个数 | | yarn.timeline-service.enabled | true | 打开timeline服务 | | yarn.log-aggregation.retain-seconds | 86400 | 日志保留时间,默认不删除 | #### 3.3.4修改mapred-site.xml | key | value | desc | | ------------------------------------- | ---------- | ---------------------- | | mapreduce.framework.name | yarn | 打开resourcemanager ha模式 | | mapreduce.jobhistory.address | dmp1:10020 | 设置jobhistory地址 | | mapreduce.jobhistory.webapp.address | dmp1:19888 | 设置ui jobhistory地址 | | mapreduce.reduce.input.buffer.percent | 0.8 | mr buffer占最大内存比率 | #### 3.3.5修改slaves文件 将datanode的hostname按行写入slaves文件 #### 3.3.6修改yarn-env.sh文件 YARN_LOG_DIR=/data0/hadoop/dfs/logs YARN_PID_DIR=/data0/hadoop/dfs/pid export JAVA_HOME=/data0/soft/java/jdk1.8.0_101 #### 3.3.7修改hadoop-env.sh 文件 export HADOOP_LOG_DIR=/data0/hadoop/dfs/log export HADOOP_PID_DIR=/data0/hadoop/dfs/pid export JAVA_HOME=/data0/soft/java/jdk1.8.0_101 #### 3.3.8修改mapred-env.sh export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000 export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA export HADOOP_MAPRED_LOG_DIR=/data0/hadoop/dfs/log export HADOOP_MAPRED_PID_DIR=/data0/hadoop/dfs/pid export JAVA_HOME=/data0/soft/java/jdk1.8.0_101 #### 3.3.9hadoop安装目录分发 将配置好的hadoop目录用scp分发到所有节点上 每个节点配置相同 ### 3.4启动Hadoop集群 #### 3.4.1启动journalNode 在dmp1、dmp2、dmp3上执行:hadoop-daemon.sh start journalnode #### 3.4.2格式化zk 在dmp1上执行:hdfs zkfc -formatZK 如果报错: ```shell 15/07/17 13:58:55 FATAL ha.ZKFailoverController: Automatic failover is not enabled for NameNode at hadoop001/**.**.**.**:8020. Please ensure that automatic failover is enabled in the configuration before running the ZK failover controller. ``` 在hdfs-site.xml中添加: dfs.ha.automatic-failover.enabled.dmp true #### 3.4.3格式化namenode 在dmp1上执行 hadoop namenode -format hadoop-daemon.sh start namenode #用于管理HA hadoop-daemon.sh start zkfc mr-jobhistory-daemon.sh start historyserver 在dmp2上执行 hdfs namenode -bootstrapStandby hadoop-daemon.sh start namenode #用于管理HA hadoop-daemon.sh start zkfc mr-jobhistory-daemon.sh start historyserver #用于管理HA #### 3.4.4启动hdfs 在dmp1上执行:start-dfs.sh 在dmp1上执行:start-yarn.sh #### 3.4.5启动其他服务 在dmp1上执行: mr-jobhistory-daemon.sh start historyserver yarn-daemon.sh start proxyserver yarn-daemon.sh start timelineserver #### 3.4.6Hadoop启动与停止 初始化完以后的常规启动和停止 启动,在dmp1上执行: ```shell start-dfs.sh start-yarn.sh ``` 停止,在dmp1上执行: ```shell stop-dfs.sh stop-yarn.sh ``` 访问 [http://dmp1:50070](http://dmp1:50070) [http://dmp2:50070](http://dmp2:50070) 可以查看hadoop集群状态,其中一个为active,一个为standby ## 四、Hive安装 ### 4.1Mysql安装 这里hive使用mysql作元数据存储,mysql安装过程略。 安装完以后创建hive元数据的schema ```mysql create database hive default charset latin1; ``` ### 4.2Hive下载准备 这里使用hive2.1.1版本进行安装。(!注:其中的配置文件是已经配置过的,已包含mysql驱动包,只需要改成对应集群的名称及目录路径即可) ### 4.3Hive配置 #### 4.3.1解压Hive 将hive2.1.1.tar.gz解压到/data0/soft #### 4.3.2修改环境变量 在hadoop安装过程中已配置 #### 4.3.3修改hive-size.xml cp hive-default.xml.template hive-site.xml 修改javax.jdo.option.ConnectionURL的值为mysql连接url 修改javax.jdo.option.ConnectionDriverName为mysql用户名 修改javax.jdo.option.ConnectionPassword的值为mysql密码 修改hive.metastore.schema.verification的值为false #### 4.3.4修改日志文件 cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties cp hive-log4j2.properties.template hive-log4j2.properties #### 4.3.5初始化元数据 登陆mysql,执行: ```mysql create database hive default charset latin1;//database名称与url一致 ``` 在hive的bin下面执行:./schematool -initSchema -dbType mysql #### 4.3.6添加metastore启动脚本 vi start-metastore.sh ```shell #/bin/sh if [ -z "${HIVE_HOME}" ]; then export HIVE_HOME="$(cd "`dirname "$0"`"/..; pwd)" fi echo $HIVE_HOME nohup $HIVE_HOME/bin/hive --service metastore > $HIVE_HOME/logs/metastore.log 2>&1 & echo $$ ``` chmod u+x start-metastore.sh ./start-metastore.sh #### 4.3.7添加hiveserver2启动脚本 vi start-hiveserver2.sh ```shell #/bin/sh if [ -z "${HIVE_HOME}" ]; then export HIVE_HOME="$(cd "`dirname "$0"`"/..; pwd)" fi echo $HIVE_HOME nohup $HIVE_HOME/bin/hive --service hiveserver2 > $HIVE_HOME/logs/hiveserver2.log 2>&1 & echo $$ ``` chmod u+x start-hiveserver2.sh ./start-hiveserver2.sh ### 4.4启动hive客户端 执行命令:hive 即可以操作hive sql ## 5.Azkaban安装 ### 5.1下载准备 下载并编译Azkaban3.10.0,这里直接使用已编译和配置的安装包Azkaban3.10.0.tar.gz ### 5.2安装配置 将Azkaban3.10.0.tar.gz解压到/data0/soft目录下 进入/data0/soft/azkaban/plugins/jobtypes/hive/ 将plugin.properties和private.properties中hive.aux.jars.path修改为hive lib目录 ```properties hive.aux.jars.path=/data0/soft/hive2.1.1/lib ``` 进入/data0/soft/azkaban/plugins/jobtypes/spark/ 将private.properties中jobtype.classpath注释掉 进入/data0/soft/azkaban/plugins/jobtypes,将common.properties中相关应用的根目录修改为实际安装目录 ```properties hadoop.home=/data0/soft/hadoop-2.6.0-cdh5.5.0 hive.home=/data0/soft/hive2.1.1 pig.home=/dpata0/soft/azkaban/plugins/jobtype/pig //spark.home=不存在的组件不用配置 azkaban.home=/data0/soft/azkaban ``` 修改private.properties,参照上面修改应用对应目录 ```properties hadoop.home=/data0/soft/hadoop-2.6.0-cdh5.5.0 hive.home=/data0/soft/hive2.1.1 jobtype.classpath=${hadoop.home}/etc/hadoop:${hadoop.home}/share/hadoop/common/*:${hadoop.home}/share/hadoop/common/lib/*:${hadoop.home}/share/hadoop/hdfs/*:${hadoop.home}/share/hadoop/hdfs/lib/*:${hadoop.home}/share/hadoop/yarn/*:${hadoop.home}/share/hadoop/yarn/lib/*:${hadoop.home}/share/hadoop/mapreduce/*:${hadoop.home}/share/hadoop/mapreduce/lib/*:${hive.home}/conf:${hive.home}/lib/* ``` 修改commonprivate.properties,按上面修改应用对应根目录,然后修改类路径 ```properties hadoop.home=/data0/soft/hadoop-2.6.0-cdh5.5.0 hive.home=/data0/soft/hive2.1.1 pig.home=/dpata0/soft/azkaban/plugins/jobtype/pig //spark.home=不存在的组件不用配置 azkaban.home=/data0/soft/azkaban jobtype.global.classpath=${hadoop.home}/etc/hadoop:${hadoop.home}/share/hadoop/common/*:${hadoop.home}/share/hadoop/common/lib/*:${hadoop.home}/share/hadoop/hdfs/*:${hadoop.home}/share/hadoop/hdfs/lib/*:${hadoop.home}/share/hadoop/yarn/*:${hadoop.home}/share/hadoop/yarn/lib/*:${hadoop.home}/share/hadoop/mapreduce/*:${hadoop.home}/share/hadoop/mapreduce/lib/*:${hive.home}/conf:${hive.home}/lib/* hadoop.classpath=${hadoop.home}/etc/hadoop:${hadoop.home}/share/hadoop/common/*:${hadoop.home}/share/hadoop/common/lib/*:${hadoop.home}/share/hadoop/hdfs/*:${hadoop.home}/share/hadoop/hdfs/lib/*:${hadoop.home}/share/hadoop/yarn/*:${hadoop.home}/share/hadoop/yarn/lib/*:${hadoop.home}/share/hadoop/mapreduce/*:${hadoop.home}/share/hadoop/mapreduce/lib/* ``` 修改/data0/soft/azkaban/conf/azkaban.properties ```properties default.timezone.id=Asia/Shanghai database.type=mysql mysql.port=3306 mysql.host=10.1.2.xxx mysql.database=azkaban mysql.user=user mysql.password=pass mysql.numconnections=50 azkaban.webserver.url=http://10.1.2.xxx:8081 azkaban.name=DMP azkaban.label=DMP Scheduling Center ``` 修改/data0/soft/azkaban/bin/azkaban-solo-start.sh,加入java环境变量 ``` export PATH=/usr/java/jdk1.8.0_101/bin:$PATH ``` 拷贝commons-configuration-1.6.jar和hadoop-common-2.6.0-cdh5.5.0.jar两个jar包到/data0/soft/azkaban/lib目录下(这里已经打包在里边了) ### 5.3启动和停止Azkaban #### 5.3.1启动Azkaban 首先在mysql中创建azkaban库 ```mysql create database azkaban; ``` 在根目录下启动Azkaban(必须),bin/azkaban-solo-start.sh #### 5.3.2停止Azkaban 在根目录下关闭Azkaban,bin/azkaban-solo-shutdown.sh ## 6.Scala安装 ### 6.1 Scala下载 到scala官网下载spark所需版本的安装包,scala-2.11.8.tgz。 ### 6.2配置 将scala解压到/user 在hadoop用户下添加Scala环境变量 ```properties export SCALA_HOME=/usr/scala export HADOOP_HOME=/data0/soft/hadoop-2.6.0-cdh5.5.0 export HIVE_HOME=/data0/soft/hive2.1.1 export ZOOKEEPER_HOME=/data0/soft/zookeeper-3.4.5-cdh5.5.0 PATH=$SCALA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH ``` 配置生效后,输入scala,可以显示scala的版本信息,则表示配置成功。 ## 7. Spark安装 ### 7.1 Spark下载 对应scala2.11.8的版本,下载spark-2.1.0-bin-hadoop2.6.tgz ### 7.2安装配置 将安装包解压到/data0/soft/下。 hadoop用户配置环境变量到bashrc ```properties export SPARK_HOME=/data0/soft/spark-2.1.0-bin-hadoop2.6 export SCALA_HOME=/usr/scala export HADOOP_HOME=/data0/soft/hadoop-2.6.0-cdh5.5.0 export HIVE_HOME=/data0/soft/hive2.1.1 export ZOOKEEPER_HOME=/data0/soft/zookeeper-3.4.5-cdh5.5.0 PATH=$SCALA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH ``` 修改根目录conf下spark-env.sh 添加 ```properties export SPARK_MASTER_IP=dmp1 export SPARK_WORKER_MEMORY=10g export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop ``` 修改slaves文件,添加节点名称 ```properties dmp2 dmp3 dmp4 dmp5 dmp6 ``` 将hive conf下面的hive-site.xml文件拷贝到spark conf下面(完成sparksql和hive元数据共享) ### 7.3启动并验证 进入spark sbin目录(防止与hadoop命令冲突),启动start-all.sh ```shell ./start-all.sh ``` 然后使用spark-shell进入scala操作界面来做spark操作。 ## 8. Hbase 安装 ### 8.1 Hbase下载 到官网下载Hbase1.2.6版本 ### 8.2 安装配置 将Hbase1.2.6安装包解压到/data0/soft目录下 配置环境变量 ```properties export SPARK_HOME=/data0/soft/spark-2.1.0-bin-hadoop2.6 export SCALA_HOME=/usr/scala export HADOOP_HOME=/data0/soft/hadoop-2.6.0-cdh5.5.0 export HIVE_HOME=/data0/soft/hive2.1.1 export HBASE_HOME=/data0/soft/hbase-1.2.6 export ZOOKEEPER_HOME=/data0/soft/zookeeper-3.4.5-cdh5.5.0 PATH=$HBASE_HOME:$SCALA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH ``` 修改所有hbase根目录下conf/hbase-site.xml ```xml hbase.rootdir hdfs://dmp/hbase hbase.cluster.distributed true hbase.zookeeper.quorum dmp4:2181,dmp5:2181,dmp6:2181 hbase.tmp.dir /data0/dfs/hbase/tmp/ hbase.local.dir /data0/dfs/hbase/local/ hbase.master 30.16.94.72:60000/ hbase.zookeeper.property.clientPort 2181 dfs.replication 3 dfs.client.socket-timeout 300000 hbase.zookeeper.property.dataDir /data0/dfs/zookeeper hbase.zookeeper.property.tickTime 6000 hbase.client.write.buffer 8388608 hbase.thrift.support.proxyuser true hbase.regionserver.thrift.http true hbase.regionserver.thrift.framed true hbase.regionserver.thrift.type TThreadPoolServer hbase.regionserver.handler.count 300 hbase.table.sanity.checks false zookeeper.session.timeout 1200000 hbase.hregion.max.filesize 32212254720 hbase.hstore.blockingStoreFiles 50 ``` 修改master hbase-evn.sh ```sh export JAVA_HOME=/data0/soft/java export HBASE_CLASSPATH=/data0/soft/hadoop-2.6.0-cdh5.5.0/etc/hadoop export HBASE_PID_DIR=/data0/hadoop/dfs/pid export HBASE_HEAPSIZE=4096 export HBASE_OPTS="$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/data0/dfs/hbase/logs/hbase-gc.log -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=60" export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data0/dfs/hbase/logs/server-gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=1 -XX:GCLogFileSize=512M" export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" export HBASE_MASTER_OPTS="-Xmx3g $HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10101" export HBASE_REGIONSERVER_OPTS="-Xmx4g -XX:+ParallelRefProcEnabled -XX:-ResizePLAB -XX:ParallelGCThreads=15 $HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102" export HBASE_LOG_DIR=/data0/dfs/hbase/logs export HBASE_MANAGES_ZK=false ``` 在conf下面添加backup-masters文件 ```properties master2 ``` 在conf下面添加regionservers文件 ```properties dmp3 dmp4 dmp5 dmp6 ``` ### 8.3 启动与关闭 start-hbase.sh启动命令 stop-hbase.sh关闭命令 访问master1:16010可以看到hbase集群状态