Hadoop 3.0.0的集群搭建和Hive 3.1.3的安装

Hi,朋友们,我们又见面了,这一次我给大家带来的是Hadoop集群搭建及Hive的安装。

说明一下,网上有很多的教程,为什么我还要水?

第一,大多数的安装都是很顺利的,没有疑难解答。

第二,版本问题,网上的搭建在3以前的比较多。

第三,我想给出一个更简洁的安装教程,把道理说明白,让读者就算在安装的过程中遇到问题也知道问题出在哪,应该朝哪个方向去要解决方案。

Hadoop-3.0.0的集群搭建

hadoop集群的安装,关键在主节点,主节点配置好以后,将主节点复制到其他做数据节点的服务器上就不用管了。
我有三台服务器,ip分别是192.168.12.71,192.168.12.200,192.168.12.201。
以12.71服务器作为主节点,我的hadoop路径是‘/opt/hadoop-3.0.0’首先要在这台服务器上安装一个jdk,我的jdk路径是‘/opt/jdk1.8’。
然后是设置hosts,vim /etc/hots

192.168.12.71 node1
192.168.12.200 node2
192.168.12.201 node3

配置

现在开始做Hadoop主节点的配置工作,我们先到hadoop的 ‘etc/hadoop/’目录下,所有的配置文件都在里面。

  1. hadoop-env.sh
    在这个文件里,增加一行指定Jdk目录
    export JAVA_HOME=/opt/jdk1.8
  2. core-site.xml
<property>
       <name>fs.defaultFS</name>
       <value>hdfs://node1:9000</value>
</property>
  1. hdfs-site.xml
<property>
       <name>dfs.replication</name>
       <value>3</value>
</property>
<!--下面的是配置namenode和datanode的数据存储位置,若不配置会有默认位置-->
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/zhibei/Hadoop/hadoop-3.0.0/data/namenode</value>
</property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/zhibei/Hadoop/hadoop-3.0.0/data/datanode</value>
</property>
  1. mapred-site.xml
   <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>
   <property>
        <name>mapreduce.application.classpath</name>
        <value>/opt/hadoop-3.0.0/share/hadoop/mapreduce/*:/opt/hadoop-3.0.0/share/hadoop/mapreduce/lib/*</value>
   </property>

报错
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster Please check whether your etc/hadoop/mapred-site.xml contains the below configuration:
如果不配置,mapreduce.application.classpath,则会报以上错误,在你hive数据做插入时现象如下
在这里插入图片描述
这个报错是在8088的端口上找到对应的插入日志,然后查看详情,就能看到。
5. yarn-site.xml

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
  </property>
  1. workers
node1
node2
node3

总共配置就是这6项。
然后把hadoop3.0.0这个节点给另外的服务器复制过去。

格式化

主节点的格式化这一步,是非常重要的。执行命令
hadoop-3.0.0/bin/hadoop namenode -format

启动hadoop集群

在使用start-all.sh和stop-all.sh脚本启停脚本之前,先在两个脚本之前添加如下内容。

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

启动 hadoop-3.0.0/sbin/start-all.sh
启动完成之后就是jps命令,jps来自jdk中,首先保证每个节点都有jdk.请把jdk配置出来
vim /etc/profile

#添加如下内容
export JAVA_HOME=/opt/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH

完成之后执行
source /etc/profile
在jdk没有在环境中配置时,使用jps命令会报找不到的问题。在配置了jdk环境之后,jps执行出现permission的权限问题,那就需要给jps文件赋权,找到jdk/bin/jps文件,执行
chmod 775 jps
就ok.
接下来就是使用jps查看各服务器中启动的服务。
node1
在这里插入图片描述
node2
在这里插入图片描述
node3
在这里插入图片描述
日志信息可以在hadoop-3.0.0/logs里面查看。等集群启动完成之后就可以访问,相关的网页了。
网页一 http://192.168.12.71:9870/
在这里插入图片描述
网页二 http://192.168.12.71:8088/
在这里插入图片描述
那么集群的搭建就到这样!

Hive-3.1.3的安装

我的hive路径是’/opt/hive-3.1.3/',和node1节点在同一个服务器。

准备工作

你首先需要有mysql,启动以后,需要创建一个数据库,我创建了一个hivedb供hive存储数据用。下面的配置中会体现。

配置

  1. hive-site.xml
    这个配置文件需要先到hive-3.1.3/conf/目录下创建,然后添加如下内容
</configuration>
		<property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://node1:3306/hivedb?createDatabaseIfNotExist=true&amp;useSSL=false</value>
                <description>JDBC connect string for a JDBC metastore</description>
                <!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
                <description>Driver class name for a JDBC metastore</description>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
                <description>username to use against metastore database</description>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>password</value>
        <description>password to use against metastore database</description>
        </property>
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive/warehouse</value>
                <description>hive default warehouse, if nessecory, change it</description>
        </property>
        <property>
            <name>hive.support.concurrency</name>
            <value>true</value>
        </property>
        <property>
            <name>hive.enforce.bucketing</name>
            <value>true</value>
        </property>
        <property>
            <name>hive.txn.manager</name>
            <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
        </property>
        <property>
            <name>hive.compactor.initiator.on</name>
            <value>true</value>
        </property>
        <property>
           <name>hive.compactor.worker.threads</name>
           <value>1</value>
        </property>
        <property>
            <name>hive.in.test</name>
            <value>false</value>
        </property>
        <property>
          <name>hive.metastore.schema.verification</name>
          <value>false</value>
          <description>Enforce metastore schema version consistency</description>
        </property>
        <property>
            <name>hive.exec.dynamic.partition.mode</name>
            <value>nonstrict</value>
        </property>
</configuration>
  1. 添加一个mysql的驱动
    mysql-connector-java-5.1.40.jar没有这个驱动,会连接不上数据库,导致meta数据无法存储。
    没有驱动,你就会看到 failed to load driver
    在这里插入图片描述
  2. 初始化元数据
    主要就是在对应的mysql数据库中创建一系列的表。命令如下
    ./bin/schematool -initSchema -dbType mysql -verbose
    如果没有成功执行如上命令就直接启动Hive,在做查询操作的时候你就会看到
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  1. 启动Hive
    ./bin/hive
    到这里就结束了,纰漏肯定有,说不定你就有一些特殊情况。不妨留言给我!

番外

这里我想说一说的就是千万注意,如果你的系统上有旧的Hadoop,Hive存在的,现在要重新的部署,一定谨慎,因为这会导致数据的不可恢复。
如果只是测试数据,那就无所谓,删掉就的节点,重新配置,一定要重新格式化这一步,不然hadoop是不能成功的。
Hive也是同样,一旦之前Hadoop被覆盖或者架构发生改变,Hive之前的数据也会有损坏的风险。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值