Hadoop+HBase+Spark+Hive环境搭建

黎东
L、先森
2019-01-07 0 2815

配置SSH无密码登陆


配置hosts文件(每台主机都要配置)

vim /etc/hosts
192.168.104.120 master
192.168.104.121 slave
192.168.104.122 slave2

修改sshd_config配置

vim /etc/ssh/sshd_config

在文件中设置如下属性:(按 / 可以进入搜索模式,按esc退出搜索模式)

PubkeyAuthentication yes
PermitRootLogin yes

重启ssh服务

sudo /etc/init.d/ssh restart

重启后,可以使用如下命令登陆本机,但此时需要密码才能登陆:

ssh localhost

首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。


接着在 master 节点将上公匙传输到 slave节点:

scp ~/.ssh/id_rsa.pub hadoop@slave:/home/hadoop/


接着在 slave节点上,将 ssh 公匙加入授权

cat /hadoop/id_rsa.pub >> /hadoop/.ssh/authorized_keys

如果有其他 slave 节点,也要执行将 master 公匙传输到 slave 节点、在 slave 节点上加入授权这两步。


这样,在 master 节点上就可以无密码 SSH 到各个 slave 节点了,可在 master 节点上执行如下命令进行检验:

ssh hadoop@slave

如果不需要密码,则配置成功。



安装JAVA环境

Java环境推荐使用 Oracle 的 JDK,首先,准备好文件 jdk-8u162-linux-x64.tar.gz,然后将文件移到/usr/local目录下:

mv jdk-8u162-linux-x64.tar.gz /data/soft

解压文件

tar -zxvf jdk-8u162-linux-x64.tar.gz

重命名文件夹为java

mv jdk-1.8.0_162 java

用vim打开/etc/profile文件(Linux下配置系统环境变量的文件)

vim /etc/profile

按i进入编辑模式,在文件末尾添加如下JAVA环境变量

export JAVA_HOME=/data/soft/java
export JRE_HOME=/data/soft/java/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

添加环境变量后,结果如下图所示,按 esc 退出编辑模式,然后输入:+wq ,按回车保存(也可以按shift + zz 进行保存)。



安装Hadoop

下载 hadoop-2.7.6.tar.gz 文件,然后将文件移到/usr/local目录下

mv hadoop-2.7.6.tar.gz /data/soft

解压

tar -zxvf hadoop-2.7.6.tar.gz

文件夹重命名为hadoop

mv hadoop-2.7.6 hadoop

配置环境变量,打开文件/etc/profile,添加如下Hadoop环境变量

export HADOOP_HOME=/data/soft/hadoop
export PATH=$PATH:/data/soft/hadoop/bin:/data/soft/hadoop/sbin

同样,需要让该环境变量生效,执行如下代码:

source /etc/profile



修改Hadoop配置文件(master上配置)

修改配置文件 core-site.xml (vim /data/soft/hadoop/etc/hadoop/core-site.xml),将当中的

<configuration>
</configuration>

修改为下面配置:

<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/data/soft/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
</configuration>


同样的,修改配置文件 hdfs-site.xml(vim /data/soft/hadoop/etc/hadoop/hdfs-site.xml):

<configuration>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>Master:50090</value>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>2</value>
		</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/data/soft/hadoop/tmp/dfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/data/soft/hadoop/tmp/dfs/data</value>
	</property>
</configuration>

修改文件 mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
        </property>
</configuration>

配置yarn-site.xml(vim /data/soft/hadoop/etc/hadoop/yarn-site.xml)

<configuration>
<property>
     <name>yarn.resourcemanager.hostname</name>
     <value>master</value>
</property>
<property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>10240</value>
</property>
<property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
</property>
</configuration>

修改文件 hadoop-env.sh (vim /data/soft/hadoop/etc/hadoop/hadoop-env.sh),在文件开始处添加Hadoop和Java环境变量。

export JAVA_HOME=/data/soft/java
export HADOOP_HOME=/data/soft/hadoop
export PATH=$PATH:/data/soft/hadoop/bin

配置slaves(vim /data/soft/hadoop/etc/hadoop/slaves),删除默认的localhost,增加从节点:

slave

注意:若再增加一个从机,再添加slave2

配置好后,将 master 上的 /data/soft/hadoop 文件夹复制到各个节点上。

sudo rm -rf /data/soft/hadoop/tmp     
# 删除 Hadoop 临时文件
sudo rm -rf /data/soft/hadoop/logs   
# 删除日志文件
scp -r /data/soft/hadoop slave:/data/soft

注意:每台从机上需要配置Hadoop的环境变量

配置完成后,执行 NameNode 的格式化:

/data/soft/hadoop/bin/hdfs namenode -format


在master节点上启动hadoop

/data/soft/hadoop/sbin/start-all.sh

成功启动后,运行jps命令

jps

如果安装成功,master节点会有NameNode进程,slave节点会有DataNode进程。

成功启动后,可以访问 Web 界面 http://192.168.104.120:50070查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。


Hive安装

下载 apache-hive-1.2.2-bin.tar.gz 文件,并将文件移到/usr/local目录下

mv apache-hive-1.2.2-bin.tar.gz /data/soft

解压

tar -zxvf apache-hive-1.2.2-bin.tar.gz

文件夹重命名

mv apache-hive-1.2.2-bin hive

编辑/etc/profile文件,配置环境变量

vim /etc/profile

在/etc/profile文件尾行添加如下内容:

export HIVE_HOME=/data/soft/hive
export PATH=$PATH:$HIVE_HOME/bin

编辑完成后,保存退出,再执行source命令使上述配置在当前终端立即生效,命令如下:

source /etc/profile


安装并配置MySQL

我们采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据。Mysql的安装比较简单,直接运行如下命令。在安装过程中,会要求配置用户名和密码,这个一定要记住。

yum install mysql-server

启动并登陆mysql shell

service mysqld start
mysql -u root  #登陆shell界面

新建hive数据库

#这个hive数据库与hive-site.xml中localhost:3306/hive的hive对应,用来保存hive元数据mysql> create database hive;

将hive数据库的字符编码设置为latin1(重要)

mysql> alter database hive character set latin1;


Hive配置

修改/usr/local/hive/conf下的hive-site.xml,执行如下命令:

cd /data/soft/hive/conf
mv hive-default.xml.template hive-default.xml

上面命令是将hive-default.xml.template重命名为hive-default.xml,然后,使用vim编辑器新建一个配置文件hive-site.xml,命令如下:

cd /data/soft/hive/conf
vim hive-site.xml

在hive-site.xml中添加如下配置信息,其中:USERNAME和PASSWORD是MySQL的用户名和密码。

<?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>USERNAME</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>
  </configuration>

然后,按键盘上的“ESC”键退出vim编辑状态,再输入:wq,保存并退出vim编辑器。由于Hive在连接MySQL时需要JDBC驱动,所以首先需要下载对应版本的驱动,然后将驱动移动到/usr/local/hive/lib中。

#解压tar -zxvf mysql-connector-java-5.1.47.tar.gz
#将mysql-connector-java-5.1.47.tar.gz拷贝到/usr/local/hive/lib目录下
cp mysql-connector-java-5.1.47-bin.jar /data/soft/hive/lib

启动hive(启动hive之前,请先启动hadoop集群)。

/data/soft/hadoop/sbin/start-all.sh #启动hadoop,如果已经启动,则不用执行该命令
hive  #启动hive


HBase安装

下载 hbase-2.0.0-bin.tar.gz 文件,并将文件移到/usr/local目录下

mv hbase-2.0.0-bin.tar.gz /data/soft

解压

tar -zxvf hbase-2.0.0-bin.tar.gz

文件夹重命名

mv hbase-2.0.0 hbase

将hbase下的bin目录添加到path中,这样,启动hbase就无需到/data/soft/hbase目录下,大大的方便了hbase的使用。教程下面的部分还是切换到了/data/soft/hbase目录操作,有助于初学者理解运行过程,熟练之后可以不必切换。
编辑/etc/profile文件

vim /etc/profile

在/etc/profile文件尾行添加如下内容:

export HBASE_HOME=/data/soft/hbase
export PATH=$HBASE_HOME/bin:$PATH
export HBASE_MANAGES_ZK=true

编辑完成后,按 esc 退出编辑模式,然后输入:+wq ,按回车保存(也可以按shift + zz 进行保存),最后再执行source命令使上述配置在当前终端立即生效,命令如下:

source /etc/profile

查看HBase版本,确定hbase安装成功,命令如下:

hbase version

修改master节点的配置文件hbase-env.sh(vim /data/soft/hbase/conf/hbase-env.sh)

export JAVA_HOME=/data/soft/java/

修改master节点的配置文件hbase-site.xml(vim /data/soft/hbase/conf/hbase-site.xml)

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://master:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>master,slave1</value>
        </property>
        <property>
                <name>hbase.temp.dir</name>
                <value>/data/soft/hbase/tmp</value>
        </property>
        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/data/soft/hbase/tmp/zookeeper</value>
        </property>
        <property>
                <name>hbase.master.info.port</name>
                <value>16010</value>
        </property>
</configuration>

注意:若再增加一个从机,hbase.zookeeper.quorum 添加slave2

修改配置文件regionservers(vim /data/soft/hbase/conf/regionservers),删除里面的localhosts,改为:

master
slave
slave2

若再增加一个从机,添加slave2

传送Hbase至其它slave节点(从机不需下载安装包,由主机传送过去即可,从机环境变量需要配置),即将配置好的hbase文件夹传送到各个节点对应位置上:

scp -r /data/soft/hbase hadoop@slave:/data/soft/

注意:每台从机上需要配置HBase的环境变量

测试运行

首先切换目录至HBase安装目录/usr/local/hbase;再启动HBase。命令如下:

/data/soft/hadoop/sbin/start-all.sh  #启动hadoop,如果已启动,则不用执行该命令
/data/soft/hbase/bin/start-hbase.sh     #启动hbase
hbase shell                         #进入hbase shell,如果可以进入说明HBase安装成功了

停止HBase运行,命令如下:

bin/stop-hbase.sh


Spark安装

Spark的安装过程较为简单,在已安装好 Hadoop 的前提下,经过简单配置即可使用,首先下载 spark-2.3.0-bin-hadoop2.7.tgz 文件,并将文件移到/data/soft目录下

mv spark-2.3.0-bin-hadoop2.7.tgz /data/soft

解压

tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz

文件夹重命名

mv spark-2.3.0-bin-hadoop2.7 spark

编辑/etc/profile文件,添加环境变量

vim /etc/profile

在/etc/profile文件尾行添加如下内容:

export SPARK_HOME=/data/soft/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

编辑完成后,保存退出,再执行source命令使上述配置在当前终端立即生效,命令如下:

source /etc/profile


配置文件spark-env.sh

cd /data/soft/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh

编辑spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:

export JAVA_HOME=/data/soft/java
export HADOOP_CONF_DIR=/data/soft/hadoop/etc/hadoop
export HADOOP_HDFS_HOME=/data/soft/hadoop
export SPARK_HOME=/data/soft/spark
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_HOST=master
export SPARK_WORKER_CORES=2
export SPARK_WORKER_PORT=8901
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=1g
export SPARK_DIST_CLASSPATH=$(/data/soft/hadoop/bin/hadoop classpath)
SPARK_MASTER_WEBUI_PORT=8079


保存并刷新配置:

source spark-env.sh

配置从机列表:

cp slaves.template slaves
vim slaves

在最后加上:

master
slave

把主机的spark文件夹复制到从机,复制脚本如下:

scp -r /data/soft/spark hadoop@slave:/data/soft

注意:每台从机上需要配置Spark的环境变量

验证Spark安装和配置

通过运行Spark自带的示例,验证Spark是否安装成功。

cd /data/soft/spark
./sbin/start-all.sh

在主机的浏览器输入http://192.168.104.120:8079/就可以看到有两个节点在spark集群上

Spark和Hive的整合

Hive的计算引擎默认为MapReduce,如果想要用Spark作为Hive的计算引擎,可以参考文章编译Spark源码支持Hive并部署


大数据