您的位置:首页 > 编程语言 > Java开发

伪分布式集群环境搭建、jdk、hadoop、zk、hbase、hive、mysql

2018-03-28 22:04 991 查看
准备工作一台机子(静态ip、映射)hadoop用户下准备:jdk1.8:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlhadoop3.0http://hadoop.apache.org/releases.htmlzookeeper3.4.1http://archive.cloudera.com/cdh5/cdh/5/hbase1.4.2hive2.3.2http://apache.fayea.com/hive/root用户下准备:mysql1.1 创建用户创建hadoop用户组:useradd -m hadoop -G root -s /bin/bash设置hadoop用户密码:passwd hadoop设置hadoop用户权限:命令visudo 92行copy一下,把root改成hadoop1.2 SSH无密码登录切换到hadoop用户下,如果没有.ssh目录输入ssh localhost命令即可进到.ssh目录输入ssh-keygen -t rsa生成秘钥然后在主机创建一个authorized_keys文件,并修改其权限chmod go-rw authorized_keys将id_rsa.pub追加到authorized_keys中cat id_rsa.pub >> authorized_keys2.1上传包、解压、重命名





2.2 环境变量#Jdkexport JAVA_HOME=/home/hadoop/app/jdk#Hadoopexport HADOOP_HOME=/home/hadoop/app/hadoopexport HADOOP_INSTALL=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin# Zookeeperexport ZOOKEEPER_HOME=/home/hadoop/app/zookeeper# HBaseexport HBASE_HOME=/home/hadoop/app/hbase# Hiveexport HIVE_HOME=/home/hadoop/app/hive# PATHexport PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin
2.3 Hadoop 伪分布式Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。Hadoop的伪分布式配置需要设置环境变量,不设置的会报错,伪分布式的配置我们仍然使用主机Master即可,Master既是NameNode,同时也是DataNode。NameNode:主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等。故这是一个核心节点DataNode:数据节点,每台从服务器节点都运行一个,负责把HDFS数据块读、写到本地文件系统Hadoop 伪分布式配置文件core-site.xml :此文件是Hadoop的核心配置文件 hdfs-site.xml :用于配置NameNode的URI及NameNode和DataNode的存放位置core-site.xml <configuration> <!-- Hadoop 文件系统的临时目录(NameNode和DataNode默认存放在hadoop.tmp.dir目录)--> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/app/hadoop/tmp</value> </property> <!-- 配置NameNode的URI --> <property> <name>fs.defaultFS</name> <value>hdfs://master27:9000</value> </property></configuration>hdfs-site.xml <configuration><!-- Master可替换为IP --> <property> <name>dfs.namenode.secondary.http-address</name> <value>master27:50090</value> </property> <!-- 设置系统里面的文件块的数据备份个数,默认是3 --> <property> <name>dfs.replication</name> <value>1</value> </property> <!-- NameNode结点存储hadoop文件系统信息的本地系统路径 --> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/app/hadoop/tmp/dfs/name</value> </property> <!-- DataNode结点被指定要存储数据的本地文件系统路径,这个值只对NameNode有效,DataNode并不需要使用到它 --> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/app/hadoop/tmp/dfs/data</value> </property></configuration>启动hadoop伪分布式关闭防火墙:systemctl disable firewalldsystemctl stop firewalld进程守护setenforce 0vi /etc/selinux/config 设置SELINUX=disabled格式化hdfs namenode -format(第一次启动一定要对hadoop进行文件系统格式化(主机上),否则hadoop配置文件就得重新配置了)status 显示为0,表示成功启动命令:start-dfs.sh停止命令:stop-dfs.sh成功之后jps下可查看到如下进程Jps、NameNode、DataNode、SecondaryNameNode可以访问页面http://master27:9870
创建用户目录:hdfs dfs -mkdir -p /user/hadoop复制文件:hdfs dfs -put /home/hadoop/app/hadoop/etc/hadoop/*.xml /user/hadoop/input查看文件列表:hdfs dfs -ls /input3.0版的删除是可以在页面WEB UI上操作的
注意(因为博主这里用的是hadoop3.0版本所以有很多端口是不一样的,详细的可以去官网查看)Namenode 端口: 50470 --> 987150070 --> 98708020 --> 9820Secondary NN 端口:50091 --> 986950090 --> 9868Datanode 端口: 50020 --> 986750010 --> 986650475 --> 986550075 --> 98642.3 Zookeeper环境配置在 zookeeper 安装目录下的 conf 目录下有一个名为 zoo_sample.cfg 的文件,拷贝该文件命名为zoo.cfg,我们需要配置该文件,zookeeper 在启动时会找这个文件作为默认配置文件。执行如下命令cp zoo_sample.cfg zoo.cfg编辑zoo.cfg修改:dataDir=/home/hadoop/app/zookeeper/tmp启动zookeeperzkServer.sh start关闭zookeeperzkServer.sh stop启动journalnodehadoop-daemon.sh start journalnode
2.4 base1.4.2配置hbase-env.sh,最下面添加 :vi hbase-env.sh# hbase 安装目录下创建logs目录export HBASE_LOG_DIR=${HBASE_HOME}/logs# hbase 安装目录下创建pids目录export HBASE_PID_DIR=${HBASE_HOME}/pids# 使用外部zk,true表示使用hbase自带的zkexport HBASE_MANAGES_ZK=false# 指定hadoop 目录export HADOOP_HOME=/home/hadoop/app/hadoop配置hbase-site.xml<configuration> <!-- 设置HRegionServers共享目录,用来持久化 HBase 注意:hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致 --> <property> <name>hbase.rootdir</name> <value>hdfs://mster27:9000/hbase</value> </property> <!-- 此处必须为true,不然hbase仍用自带的zk,若启动了外部的zookeeper,会导致冲突,hbase启动不起来 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 本地文件系统的临时文件夹(/tmp会在重启时清除) --> <property> <name>hbase.tmp.dir</name> <value>/home/hadoop/app/hbase/tmp</value> </property> <!-- ZooKeeper的zoo.conf中的配置(dataDir所设定的位置),快照的存储位置 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoop/app/zookeeper/data</value> </property> <!-- ZooKeeper 会话超时。Hbase 把这个值传递给 zk 集群,向它推荐一个会话的最大超时时间 --> <property> <name>zookeeper.session.timeout</name> <value>120000</value> </property> <!-- 当 regionserver 遇到 ZooKeeper session expired , regionserver 将选择 restart 而不是 abort --> <property> <name>hbase.regionserver.restart.on.zk.expire</name> <value>true</value> </property> <!-- ZK位置(HBase使用外部ZK,hbase-env.sh中属性HBASE_MANAGES_ZK要设置为false),必须ZK数量必须为奇数,多个可用逗号分隔 --> <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> </property> </configuration>启动hbasestart-hbase.sh启动成功之后会显示如下进程HMaster、SecondaryNameNode、ResourceManager、NodeManager NameNode、Jps、DataNode、QuorumPeerMain、HRegionServer2.5 mysql下载地址:https://dev.mysql.com/downloads/mysql/root用户下上传mysql包授予mysql安装包可执行权限(如果已拥有了可执行权限,此步骤可省略)chmod 755 mysql*执行如下命令依次安装rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-libs-compat-5.7.20-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm --nodeps --forcemysql 安装完成后,输入如下命令启动 mysql 服务systemctl start mysqld.servicesystemctl status mysqld.service设置mysql root 用户密码输入如下命令查看 root 用户的初始化密码grep 'temporary password' /var/log/mysqld.log登录mysql -uroot -p"密码"ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd'; 修改密码flush privileges; 命令使修改密码后立即生效quit; 退出使用工具连接mysql:windows cmd 下可以 ping 通 centos7 的ip登录 mysql 授予 root 用户远程登录权限:mysql> grant all privileges on *.* to 'root'@'%' identified by 'P@ssw0rd' with grant option; mysql> flush privileges;
2.6 hive2.3.2前提:配置hive环境之前先确定root用户下是否已经安装mysql数据库配置hive-site.xml文件进入hive的conf目录下,拷贝文件hive-default.xml.template命名为hive-site.xmlcp hive-default.xml.template hive-site.xml
<configuration>
<property>//39行
<name>hive.exec.scratchdir</name>
<value>/home/hadoop/app/hive/tmp/hive</value>
<description>hive用于存储不同阶段map/reduce的执行计划及存储中间输出结果的目录</description>
</property>
<property>//79行
<name>hive.downloaded.resources.dir</name>
<value>/home/hadoop/app/hive/tmp/${hive.session.id}_resources</value>
<description>hive下载资源的存储目录</description>
</property>
<property>//1685行
<name>hive.querylog.location</name>
<value>/home/hadoop/app/hive/tmp/hive</value>
<description>hive结构日志存储目录</description>
</property>
<property>//3976行
<name>hive.server2.logging.operation.log.location</name>
<value>/home/hadoop/app/hive/tmp/hive/operation_logs</value>
<description>hive的操作日志目录</description>
</property>
<property>//84行
<name>hive.scratch.dir.permission</name>
<value>700</value>
<description>hive访问hadoop文件权限设置</description>
</property>
<property>//529行
<name>javax.jdo.option.ConnectionPassword</name>
<value>P@ssw0rd</value>
<description>元数据存储的数据库的密码</description>
</property>
<property>//1044行
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>元数据存储数据库的用户名</description>
</property>
<property>//545行
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master27:3306/hive_metadata?createDatabaseIfNotExist=true&characterEncoding=utf8</value>
<description>元数据存储的数据库的url</description>
</property>
<property>//1020行
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>元数据存储的数据库的驱动</description>
</property>
<property>//741行
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
<description>开启自动创建(生产环境中不推荐使用)</description>
</property>
<property>//746行
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!------------ 配置hive的事务 start ------------>
<property>//2445行
<name>hive.optimize.sort.dynamic.partition</name>
<value>false</value>
</property>
<property>//2775行
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>找不到的话,在任意位置添加上即可
<name>hive.enforce.bucketing</name>
<value>true</value>
</property>
<property>//250行
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<property>//2870行
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>//2964行
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>//2974行
<name>hive.compactor.worker.threads</name>
<value>1</value>
</property>
<property>找不到的话,在任意位置添加上即可
<name>hive.in.test</name>
<value>true</value>
</property>
<!------------ 配置hive的事务 end ------------>
<property>//1195
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
lib下面添加mysql依赖包


初始化启动hiveschematool -dbType mysql -initSchema启动之前要确保启动hadoop集群hive1$ hive 查看所有数据库,默认的数据库defaulthive启动成功后,查看hive的临时目录下会生成如下文件$ cd /home/hadoop/hive/tmp/hive2$ hiveserver2启动成功后另起一个窗口$ beeline -u jdbc:hive2:// 链接
进入hive客户端报错$ hive错误信息:Name node is in safe mode.解决方法:执行如下命令离开安全模式$ hadoop dfsadmin -safemode leave
启动命令顺序:zkServer.sh startstart-dfs.shstart-yarn.shstart-hbase.sh (使用hive可以不用启动hbase)关闭命令顺序:stop-hbase.shstop-yarn.shstop-dfs.shzkServer.sh stop
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: