hive第一步:安装hadoop

Posted 破产DBA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive第一步:安装hadoop相关的知识,希望对你有一定的参考价值。

hive概述

Hive, 一个开源的数据仓库解决方案,建基于hadoop。Hive支持的查询是类似SQL方式的陈述语言:HiveQL 。在Facebook,,Hive 数据仓库包含了数万张表,共存储超过700TB的数据。广泛的用于每个月超过200个用户的报告以及ad-hoc分析。

一句话形容hive的作用

Hive使用熟悉的sql语言简化了hadoop分布式平台的mp操作,使数据分析更简便;

hive适合场景

Hive并非为联机事务处理而设计,Hive并不提供实时的查询和基于行级的数据更新操作。Hive的最佳使用场合是大数据集的批处理作业, 数据统计类,离线分析类,例如,网络日志分析, 各类大数据量结果汇总.

体系结构图

Hadoop环境准备

服务器准备

使用虚拟机准备3台服务器:

服务器hostname

OS

内存

IP

Hive1

Redhat6.5_64

2G

192.168.56.201

Hive2

Redhat6.5_64

1G

192.168.56.202

Hive3

Redhat6.5_64

1G

192.168.56.203

OS环境准备

关闭防火墙

为避免防火墙问题,事先都关闭防火墙,并设置成开机不启动

service iptables stop

chkconfig iptables off

修改hostname

修改 /etc/sysconfig/network

添加hosts

vi /etc/hosts

192.168.56.201 hive1

192.168.56.202 hive2

192.168.56.203 hive3

修改ssh互信

创建hadoop用户

useradd hadoop

passwd hadoop

建立3台机器互相间的ssh互信, 注意,需要建立跟自己的ssh互信,以下是hive1建立和hive2的互信例子:

[hadoop@hive1 ~]# ssh-keygen

[hadoop@hive1 ~]# ssh-copy-id -i hive2

安装jdk

Hadoop与hive都是依赖jdk的, 由于使用版本比较新, 这里安装jdk1.8

wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz

tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/lib/jdk8

vi /etc/profile

export JAVA_HOME=/usr/lib/jdk8/

export PATH=${JAVA_HOME}/bin:$PATH

[root@redhat jdk8]# java -version

java version "1.8.0_151"

Java(TM) SE Runtime Environment (build 1.8.0_151-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

配置hadoop

下载二进制版本,这里使用了2.9.0

解压缩,复制到/usr/local/hadoop3中

tar –zxvf hadoop-2.9.0.tar.gz  -C /usr/hadoop

创建hadoop使用的数据文件夹

hive1, hive2, hive3都需要操作:

mkdir /home/hadoopdir/tmp -p

mkdir /home/hadoopdir/dfs -p

mkdir /home/hadoopdir/dfs/name

mkdir /home/hadoopdir/dfs/data

chown -R hadoop /home/hadoopdir

配置hdfs-site.xml

这个文件主要用于配置name和data路径的

以下是官网文档给的几个参数配置

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:///home/hadoop/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:///home/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop1:50090</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

注意: 如果没有配置路径, hadoop默认会将数据文件指向/tmp

配置core-site.xml

<configuration>

   <property>

       <name>fs.default.name</name>

       <value>hdfs://hadoop1:9000</value>

   </property>

   <property>

       <name>hadoop.tmp.dir</name>

       <value>/home/hadoopdir/tmp</value>

   </property>

   <property>

       <name>io.file.buffer.size</name>

       <value>131702</value>

   </property>

<property>

<name>hadoop.proxyuser.root.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.root.groups</name>

<value>*</value>

</property>

</configuration>

配置mapred-site.xml

<configuration>

  <property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

         <final>true</final>

   </property>

 <property>

    <name>mapreduce.jobtracker.http.address</name>

    <value>hadoop1:50030</value>

 </property>

   <property>

       <name>mapreduce.jobhistory.address</name>

       <value>hadoop1:10020</value>

   </property>

   <property>

       <name>mapreduce.jobhistory.webapp.address</name>

       <value>hadoop1:19888</value>

   </property>

   <property>

       <name>mapred.job.tracker</name>

       <value>http://hadoop1:9001</value>

   </property>

</configuration>

配置yarn-site.xml

<configuration>

   <property>

       <name>yarn.nodemanager.aux-services</name>

       <value>mapreduce_shuffle</value>

   </property>

   <property>      

   <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

       <value>org.apache.hadoop.mapred.ShuffleHandler</value>

   </property>

   <property>

       <name>yarn.resourcemanager.address</name>

       <value>hadoop1:8032</value>

   </property>

   <property>

      <name>yarn.resourcemanager.scheduler.address</name>

       <value>hadoop1:8030</value>

   </property>

   <property>

      <name>yarn.resourcemanager.resource-tracker.address</name>

       <value>hadoop1:8031</value>

   </property>

   <property>

       <name>yarn.resourcemanager.admin.address</name>

       <value>hadoop1:8033</value>

   </property>

   <property>

       <name>yarn.resourcemanager.webapp.address</name>

       <value>hadoop1:8088</value>

   </property>

    <property>

      <name>yarn.resourcemanager.hostname</name>

      <value>hadoop1</value>

</property>

   <property>

       <name>yarn.nodemanager.resource.memory-mb</name>

       <value>2048</value>

   </property>

</configuration>

配置/etc/Hadoop/slaves

删除localhost,添加下述:

hadoop2

hadoop3

配置hadoop.env.sh

修改以下值为:

export JAVA_HOME=/usr/jdk

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

检查系统环境变量

vi /etc/profile

export JAVA_HOME=/usr/jdk

export PATH=$JAVA_HOME/bin:$PATH:/usr/hadoop/sbin:/usr/hadoop/bin

export HADOOP_HOME=/usr/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

启动hadoop

格式化namenode

[root@hive1 ~]# hdfs namenode –format

启动所有节点

su - hadoop

start-all.sh

检查是否启动

[root@hive1 hadoop3]# jps

9001 NodeManager

8505 SecondaryNameNode

8122 NameNode

9226 Jps

8267 DataNode

8749 ResourceManager

可以通过网页查看hadoop群集的状态

http://192.168.56.201:50070

错误信息查看

glibc.2.14

export HADOOP_ROOT_LOGGER=DEBUG,console

[hadoop@hadoop1 lib]$ hadoop checknative –a

18/03/09 22:34:26 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...

18/03/09 22:34:26 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /usr/hadoop/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/hadoop/lib/native/libhadoop.so.1.0.0)

查看现在系统的glibc版本

strings /lib64/libc.so.6 |grep GLIBC_

安装glibc-2.1.4

[hadoop@master001 native]$ tar -jxvf /home/hadoop/software/glibc-2.14.tar.bz2 [hadoop@master001 native]$ cd glibc-2.14/ [hadoop@master001 glibc-2.14]$ tar -jxvf /home/hadoop/software/glibc-linuxthreads-2.5.tar.bz2 [hadoop@master001 glibc-2.14]$ cd ..

#加上优化开关,否则会出现错误 [hadoop@master001 glibc-2.14]$ export CFLAGS="-g -O2"          

[hadoop@master001 native]$ ./glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin [hadoop@master001 native]$ make        #编译,执行很久,可能出错,出错再重新执行 [hadoop@master001 native]$ sudo make install   #安装,必须root用户执

root用户问题

User root is not allowed to impersonate anonymous

Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User:xiaosiis not allowed to impersonate anonymous

解决方案

修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项:

<property>

   <name>hadoop.proxyuser.root.hosts</name>

   <value>*</value>

</property>

<property>

   <name>hadoop.proxyuser.root.groups</name>

   <value>*</value>

</property>

从本地传文件到hadoop报错

[hadoop@hadoop1 ~]$ hdfs dfs -put 11.csv  /csv1/

18/03/12 09:43:27 INFO hdfs.DataStreamer: Exception in createBlockOutputStream

经查询是因为节点2状态不对,但是查询了节点2 jps 发现datenode是启动着的, 手动启动命令后正常, 估计是因为旧数据休眠导致的虚拟机状态问题,执行下述命令修复:

hadoop-daemon.sh start datanode

以上是关于hive第一步:安装hadoop的主要内容,如果未能解决你的问题,请参考以下文章

搭建hadoop+spark+hive环境(配置安装hive)

Hadoop学习第一步之基础环境搭建

hadoop 伪分布式单机部署练习hive

hadoop 伪分布式单机部署练习hive

装hadoop的第一步,装ubuntu并换源并装jdk

自己动手一步一步安装hadoop(含编译hadoop的native本地包)