一、完善目录
1、在HBinz用户下新建目录
software 存放安装软件
data 存放测试数据
source 存放源代码
lib 存放相关开发的jar
app 软件安装目录
tmp 存放HDFS/Kafka/ZK数据目录
maven_repo maven本地仓库
shell 存放上课相关的脚本
mkdir software data source lib app tmp maven_repo shell
2、上传tar.gz文件到software文件夹里
rz
3、解压
tar -xzvf hadoop-2.6.0-cdh5.7.0.tar.gz ~/app
...
二、安装HadoopCDH版本
参照lesson08编译、安装CDH版本的Hadoop
其中修改了MAVEN仓库的默认本地库地址:/home/HBinz/maven_repo/.m2/repository
<localRepository>/home/HBinz/maven_repo/.m2/repository</localRepository>
修改目录下/home/HBinz/app/apache-maven-3.3.9/conf/setting.xml文件
其中出现了几个问题,由于当时没有思路,因此没有选择编译,而是选择了安装。问题如下:
1、无论是root下编译还是HBinz用户下编译,都很快就报错了
据说是因为jdk版本的问题,1.7的话直接可以编译。我的1.8,所以报错了。
可以通过修改hadoop-annotations下的jdk版本指向1.8就行了
2、因此后面我选择了直接安装CDH(编译是为了方便修改源码,二次开发)
3、解压Hadoop
4、配置HADOOP_HOME环境变量
5、配置core-site.xml
6、配置hdfs-site.xml
7、将mapred-site.xml.template改为mapred-site.xml
8、修改配置hadoop-env.sh
export JAVA_HOME=/opt/app/jdk1.8.0_45
9、配置ssh无密
10、格式化hdfs
hdfs namenado -format
天怒人怨的是,启动hdfs的时候报错了:INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解决思路:
(1)增加调试信息
在/etc/hadoop/hadoop-env.sh文件中增加
$ export HADOOP_ROOT_LOGGER=DEBUG,console
(2)打印出来发现是:在读取本地lib文件的时候没有成功读取
(3)马上hadoop checknative -a 查看,发现全部本地库都没有
(4)在http://dl.bintray.com/sequenceiq/sequenceiq-bin/
(5)解压natice文件
tar -xvf hadoop-native-64-2.7.0.tar -C hadoop-2.7.2/lib/native
tar -xvf hadoop-native-64-2.7.0.tar -C hadoop-2.7.2/lib
(6)配置环境变量
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
source /etc/profile
(7)然后这次没有报错,但是jps起来显示没有进程,我马上输入
hdfs dfs -ls
然后报错:Call From java.net.UnknownHostException: hadoop002: hadoop002: unknown error to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused;
这里应该是说未知的主机异常,主机名和ip地址未知,无法连接。
(8)赶紧配置主机名与ip地址映射
vi /etc/sysconfig/network
添加以下代码:
192.168.137.131 hadoop002
(9)上传文件
三、配置Hive环境
1、下载Hive
http://archive.cloudera.com/cdh5/cdh/5/
2、解压到/app目录
tar -xzvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/opt/app/
3、配置环境变量
vi /etc/profile
4、拷贝驱动到lib目录下
cp mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz /opt/app/hive-1.1.0-cdh5.7.0/lib/
5、修改conf配置文件
cp hive-env.sh.template hive-env.sh
修改/etc/sudoers文件
chmod u+w /etc/sudoers
vi /etc/sudoers
sudo cp hive-env.sh.template hive-env.sh
修改hive-env.sh文件
6、新增hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/ruozedata_basic03?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>
上述四个配置语句对应下图的Hadoop集群的生产环境
7、启动MySql和Hadoop
8、/opt/app/hive-1.1.0-cdh5.7.0/scripts/metastore/upgrade/mysql可以查看更新的sql语句
四、启动Hive
/opt/app/hive-1.1.0-cdh5.7.0/bin
hive
启动成功
注意:
1、如果没有驱动文件,会报
Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
2、如果hive-site.xml文件中
UserName和Password错误也会报错
aused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
五、Hive表创建
1、进入mysql数据库
可以看到Hive创建数据库成功。
2、查看hbinz001里面的表
3、Hive创建表
4、查看hive日志