赞
踩
之前断断续续搞过一些Hadoop生态的学习和小实践,现在有这个需要了就重新捡起来了,但是机器上没有这套环境需要重新安装一下,其实本质上来说在Linux下安装很多框架或者是系统并不麻烦,大多都是解压缩,改一些配置文件,然后配置一下对应的环境变量最终source使其生效就可以了。
最近需要使用到HBase数据库,HBase数据库要依赖Hadoop,我们选择使用MySQL作为Hive的元数据,所以在安装配置Hive之前需要安装好Hadoop和MySQL才可以。
为了方便使用,我将自己在整个安装过程中使用到的所有的安装包打包上传CSDN中,如果需要可以直接去下载使用,资源下载地址在这里。
接下来我们开始实践,首先是Hadoop的安装搭建。这里我选择的是2.7.x系列的版本,之前用的也是这个系列的,这个没有具体要求,感觉1.x系列的现在比较老了,2.x很多功能也都是兼容了1.x系列版本的。
因为是自己使用的机器所以拥有root权限,但是安装Hadoop最好还是不要用root账户,需要创建一个名为hadoop的用户,命令如下:
sudo useradd -m hadoop -s /bin/bash #创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell
之后为hadoop用户设置密码,这个步骤也是很重要的,因为后面的很多安装都要这个密码:
- sudo passwd hadoop
- sudo adduser hadoop sudo
- 连续两次的密码确认,均正确输入就可以了
我使用的xshell作为Linux的连接工具,这时候可以新建一个会话,以hadoop的身份进行登录认证。
因为后面的操作都要是在切换在了hadoop用户下进行的,所以命令前面都要加一个sudo,具体可以去百度sudo命令,这里就不多说了,下面开始以hadoop用户登录,实践整个部署安装。
登录第一步就是需要更新源信息,不然会导致部分安装失败:
sudo apt-get update
由于Vim、gedit等编辑工具之前已经安装配置好了,这里就不需要安装了,需要的话可以自行安装一下。可选命令如下:
- sudo apt-get update
- sudo apt-get install gedit-gmate
- sudo apt-get install gedit-plugins
- sudo apt-get remove gedit
- sudo apt-get install gedit
- sudo apt-get install vim
- sudo apt-get install vi
接下来的第一步我们首先来配置java运行环境【所使用的的安装包都在前文给的资源链接里面】:
- sudo mkdir -pv jvm #创建/usr/lib/jvm目录用来存放JDK文件
- sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm #把JDK文件解压到/usr/lib/jvm目录下
接下来需要配置环境变量:
首先打开指定文件:
- cd ~
- vim ~/.bashrc
增加下面的内容到文件中:
- export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
- export JRE_HOME=${JAVA_HOME}/jre
- export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
- export PATH=${JAVA_HOME}/bin:$PATH
使得上述的新增配置生效:
source ~/.bashrc
之后输入下面命令验证是否配置成功:
java -version
下面的输出即表示安装配置JDK完成:
之后我们开始安装ssh:
sudo apt-get install openssh-server
通过ssh-keygen 生成密钥,实现后面的免密登录:
- cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
- ssh-keygen -t rsa # 会有提示,都按回车就可以
- cat ./id_rsa.pub >> ./authorized_keys # 加入授权
操作结果如下:
完成认证后,ssh localhost就可以直接连接登录上了,可以看到已经不再需要密码了。
基础的环境配置完成后就可以安装Hadoop了,安装包都放在前文的资源链接里面了,安装路径选择在/usr/local/中,下面是安装过程:
- sudo tar -zxf ~/下载/hadoop--2.7.1.tar.gz -C /usr/local # 解压到/usr/local中
- cd /usr/local/
- sudo mv ./hadoop-2.7.1/ ./hadoop # 将文件夹名改为hadoop
- sudo chown -R hadoop ./hadoop # 修改文件权限
完成上述操作后,其实Hadoop已经安装好了,这就是所谓的【解压即安装】,之后无非就是修改一些配置文件,首先简单来验证下是否可用:
- cd /usr/local/hadoop
- ./bin/hadoop version
输出如下:
这种默认的无修改的配置下,Hadoop是以单机模式下运行的,我们不需要单机运行模式,这里选择是伪分布模式进行运行,因为实际资源不多,没有三五台的机器资源可以用。
按照上述安装操作步骤,Hadoop的配置文件都在 /usr/local/hadoop/etc/hadoop/下面,下面开始修改配置:
core-site.xml原始内容如下:
- <configuration>
- </configuration>
vim修改为:
- <configuration>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/usr/local/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://localhost:9000</value>
- </property>
- </configuration>
hdfs-site.xml原始内容如下:
- <configuration>
- </configuration>
vim修改为:
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/usr/local/hadoop/tmp/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/usr/local/hadoop/tmp/dfs/data</value>
- </property>
- </configuration>
之后更新配置文件,加入下面的内容:
- export HADOOP_HOME=/usr/local/hadoop
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
之后同样执行source命令使其生效。
配置完成后,执行 NameNode 的格式化:
./bin/hdfs namenode -format
输出如下:
日志显示成功格式化,退出状态为0,表示成功执行了。
之后借助于jps命令来查看是否启动成功:
可以看到已经有在成功运行的DataNode和NameNode。
到这里Hadoop的安装就完成了,接下来就开始安装Hive了。
在最开始的时候我们说到过了,选择MySQL作为Hive的元数据库进行登录,所以在安装配置Hive之前需要先安装MySQL
,所用到的安装包也都在前文提供的资源链接里面了,下面开始安装MySQL:
执行安装命令:
sudo apt-get install mysql-server
执行输出如下:
安装过程中会出现一个界面要求你输入MySQL的登录密码,同样是两次确认输入。安装完成后启动,如下:
后面遇到了一个报错:
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
这是因为MySQL服务在安装的时候没有进行初始化导致的,这里直接对其进行初始化,如下:
完成MySQL安装后,要安装下连接器:
- tar -zxvf mysql-connector-java-5.1.40.tar.gz
- cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib
完成上述操作后就可以部署Hive了,Hive的安装整体比较简单:
- udo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local # 解压到/usr/local中
- cd /usr/local/
- sudo mv apache-hive-3.1.2-bin hive # 将文件夹名改为hive
- sudo chown -R dblab:dblab hive # 修改文件权限
之后修改配置文件:
vim ~/.bashrc
增加下面的配置内容:
- export HIVE_HOME=/usr/local/hive
- export PATH=$PATH:$HIVE_HOME/bin
- export HADOOP_HOME=/usr/local/hadoop
最后使配置生效:
source ~/.bashrc
hive的配置文件在conf目录下面,这里我们修改里面hive-site.xml文件:
vim ./conf/hive-site.xml
新增下面内容:
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <configuration>
- <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>
- </configuration>
source生效后,执行下面命令,避免出现Hive metastore database is not initialized的错误:
./bin/schematool -dbType mysql -initSchema
之后,输入 hive 启动hive进入交互式shell环境,输出如下:
到这里hive的安装部署就已经完成了,简单操作一下:
首先查看了一下已有的数据库信息,之后创建了名为hive的数据库,再次查看数据库已经出现了新创建的hive数据库了,要注意的是这里hive的每条命令执行完成后都会出现一个OK,这个仅仅是表示执行成功的意思。
最后就到了安装配置HBase的阶段了。因为HBase对Hadoop是有很强的版本依赖的,所以这里牵涉到按照与我们现在已经安装好的Hadoop版本对应的HBase才可以,下面是从网上找到的一张版本关系对应表:
可以看到我们安装的Hadoop2.7.1可以对应安装1.2.x、1.3.x和2.0.x三个版本的HBase,这里我们选择了1.2.5作为对应的安装版本,所使用的的安装包都在前文提供的资源链接里面。
其实不同软件间的安装没有很大的区别的,这里贴出来操作过程:
- sudo tar -zxvf ./hbase-1.2.5-bin.tar.gz -C /usr/local
- sudo mv ./hbase-1.2.5 ./hbase
- sudo chown -R hadoop ./hbase #将HBASE目录的操作权限赋予hadoop用户
同样是解压即安装,之后配置文件:
vim ~/.bashrc
新增下面的内容:
export PATH=$PATH:/usr/local/hbase/bin
最后行source命令使上述配置在当前终端立即生效。
接下来查看一下HBase版本信息:
这里我们不再去看单机运行模式,而是同Hadoop一样直接实践伪分布模式:
修改Hbase的配置文件:
vim /usr/local/hbase/conf/hbase-env.sh
新增下面的内容:
- export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
- export HBASE_CLASSPATH=/usr/local/hbase/conf
- export HBASE_MANAGES_ZK=true
最后行source命令使上述配置在当前终端立即生效。之后配置/usr/local/hbase/conf/hbase-site.xml文件:
vim /usr/local/hbase/conf/hbase-site.xml
原始文件应为空的,替换为下面的内容:
- <configuration>
- <property>
- <name>hbase.rootdir</name>
- <value>hdfs://localhost:9000/hbase</value>
- </property>
- <property>
- <name>hbase.cluster.distributed</name>
- <value>true</value>
- </property>
- <property>
- <name>hbase.unsafe.stream.capability.enforce</name>
- <value>false</value>
- </property>
- </configuration>
hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式.另外,上面配置文件中,hbase.unsafe.stream.capability.enforce这个属性的设置,是为了避免出现启动错误。也就是说,如果没有设hbase.unsafe.stream.capability.enforce为false,那么,在启动HBase以后,会出现无法找到HMaster进程的错误,启动后查看系统启动日志(/usr/local/hbase/logs/hbase-hadoop-master-ubuntu.log),会发现如下错误:
反之,在配置文件中事先指定后,我们执行HBase的启动命令如下:
出现上述信息即表示启动成功,进入了到了hbase的交互式环境里面了。
查看对应日志:
cat hbase-hadoop-master-model.log
结果如下所示:
已经正常运行了。
如果不再使用HBase了可以关闭:
Hadoop是HBase运行的前提基础,所以想要运行HBase需要先启动Hadoop,同理,关闭服务的时候需要先停止HBase之后才能停止Hadoop。
到这里,本文的安装部署工作就全部结束了,后面会实践Python操作HBase。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。