1.在ubuntu系统上安装mysql数据库
sudo apt-get install mysql-server
安装过程中会提示两次输入密码,己住自己设定的密码,一直下一步。
检查是否安装成功:mysql -u 用户名 -p 密码 显示数据库后
show databases; 出现数据库列表即可
2.安装JDK1.8
2.1 在官网上下载jdk7及以上的版本—jdk1.8
2.2 安装jdk
$ mkdir /usr/lib/jvm #创建jvm文件夹
$ sudo tar zxvf jdk-7u80-linux-x64.tar.gz -C /usr/lib #/ 解压到/usr/lib/jvm目录下
$ cd /usr/lib/jvm #进入该目录
$ mv jdk1.7.0_80 java #重命名为java
$ vi ~/.bashrc #给JDK配置环境变量
2.3 设置环境变量
进入到当前用户的.bashrc文件:sudo vim ~/.bashrc
在.bashrc中添加如下命令
export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
修改完之后,更新使之生效
$ source ~/.bashrc #使新配置的环境变量生效
$ java -version #检测是否安装成功,查看java版本
若出现如图,则安装成功
3.安装hadoop-2.6.0
3.1 下载hadoop-2.6.0.tar.gz—hadoop-2.6.0
3.2 创建hadoop用户
$ sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell
$ sudo passwd hadoop #为hadoop用户设置密码,之后需要连续输入两次密码
$ sudo adduser hadoop sudo #为hadoop用户增加管理员权限
$ su - hadoop #切换当前用户为用户hadoop
$ sudo apt-get update #更新hadoop用户的apt,方便后面的安装
3.3 安装SSH,设置SSH无密码登陆
$ sudo apt-get install openssh-server #安装SSH server
$ ssh localhost #登陆SSH,第一次登陆输入yes
$ exit #退出登录的ssh localhost
$ cd ~/.ssh/ #如果没法进入该目录,执行一次ssh localhost
$ ssh-keygen -t rsa
然后再输入:
$ cat ./id_rsa.pub >> ./authorized_keys #加入授权
$ ssh localhost #此时已不需密码即可登录localhost
出现下图即安装登陆ssh成功:
注:3.3步一定要设置,此处设置的ssh属于链接的网络协议,我之前以为是设置xshell连接,我本机上装的有xshell,也可以连接,就没设置这步,结果就失败了。
3.4 安装hadoop
$ sudo tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local #解压到/usr/local目录下
$ cd /usr/local
$ sudo mv hadoop-2.6.0 hadoop #重命名为hadoop
$ sudo chown -R hadoop ./hadoop #修改文件权限
3.5 给hadoop配置环境变量,同样放在.bashrc文件中,添加如下配置
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
更新文件生效后,出现如下即安装成功:
配置完成后,执行格式化,启动测试
$ ./bin/hdfs namenode -format
$ ./sbin/start-all.sh
$ jps
出现NameNode,DataNode和SecondaryNameNode则启动成功。
可能出现的问题
4.安装hive数据库
4.1 下载apache-hive-1.2.2-bin.tar.gz
4.2 在mysql上创建一个hive数据库,并建立user表,添加一条用户记录并赋予权限
我安装的是jdk1.8,但是这个不含jps,所以需要再下载一个openjdk-8-jdk-headless。
create database hive;
use hive;
create table user(Host char(20),User char(10),Password char(20));
insert into user(Host,User,Password) values("localhost","hive","123456");
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
FLUSH PRIVILEGES;
4.3 安装hive(将文件通过xshell工具传到服务器的临时文件中)
将mysql-connector-java-5.2.24-bin.jar放到$HIVE_HOME/lib下
$ sudo tar -zxvf /tmp/apache-hive-1.2.2-bin.tar.gz -C /usr/local #解压到/usr/local目录下
$ cd /usr/local
$ sudo mv apache-hive-1.2.2-bin.tar.gz hive #重命名为hive
4.4 配置hive
4.4.1 配置环境变量
sudo vim /etc/profile
保存后记得要source /etc/profile 使其更改生效
#hive
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
4.4.2 修改hive/conf下的几个模板
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
4.4.2.1 更改hive-env.sh文件,指定hadoop的安装路径
HADOOP_HOME=/usr/local/hadoop
4.4.2.2 更改hive-site.xml文件,指定数据库的相关信息
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</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>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
4.4.3 修改hive/bin下的hive-config.sh文件
export JAVA_HOME=/usr/lib/jvm/java
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
启动测试
4.4.4 可能出现的问题
a.
这是因为hadoop目录下存在老版本的jline,把hive目录下的jline包拷贝到${HADOOP_HOME}/share/hadoop/yarn/lib目录下即可。
b.
这是因为hive-site.xml中的临时文件路径没有配置,将所有system:java.io.tmpdir改成${HADOOP_HOME}/tmp即可
4.5 配置hiveserver2
我理解这个就是支持其他编程语言通过调用自己的API访问hive数据库
<property>
<name>hive.metastore.uris</name>
<value>thrift://172.16.101.33:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.
</description>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>172.16.101.33</value>
<description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.
</description>
</property>
启动测试:先启metastore,再另起一个窗口,启hiveserver2,
连接测试成功
补充:
公司断电,服务器重启,重启时需要注意的问题
1.重启hadoop的问题(起来以后没有namenode):
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/soyuan/Public/hadoop-3.1.1/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
如果这里的value是写死的路径,那么就把该路径下的tmp文件删除,在格式化hadoop namenode -format,在start-all.sh
2.hive启动后show databases报错:
SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
先执行hive --service metastore即可