在虚拟机上安装Hadoop和Hive

在虚拟机上安装Hadoop和Hive,第1张

在虚拟机上安装Hadoop和Hive

1.virtual box安装

到virtual box下载网页上下载virtual box和扩展程序

virtualbox.org/wiki/Downloads

 

下载好后点击打开安装程序

 基本上不需要修改内容,一直下一步即可。

完成后打开的页面与下图类似(下图已创建虚拟机):

 打开管理->全局设定->扩展 添加下载好的扩展程序(下图已添加)

2. 创建虚拟机

 选择新建虚拟机创建一台虚拟机,这里只是做一下示范,名字可以任意,这里用node4,node5,node6作为三台机器的主机名。

 分配内存为2G

 新建虚拟硬盘

 分配12G的虚拟硬盘

 创建成功

 然后设置该虚拟机的网络连接方式为桥接网卡,让机器有自己的IP地址,独立于宿主机。

 3.下载centos8镜像

到镜像网站上下在centos8的光盘映像,下载链接如下:http://iso.mirrors.ustc.edu.cn/centos/8.4.2105/isos/x86_64/CentOS-8.4.2105-x86_64-dvd1.iso

4.安装centos8系统

 如果是第一次安装需要手动注册选择安装映像

 选择第一项直接安装,等待加载完成后出现系统安装引导页面,默认语言选择英语,点击continue继续

一共需要进行5处设置:网络选项需要打开网卡并修改主机名为node4,时区选择亚洲上海并打开网络时间,软件选项选择服务器,安装位置选择创建好的硬盘,,最后设置管理员密码为123456。

 然后开始安装。

完成后点击重启系统。 

选择第一个系统启动,安装成功

建立新的虚拟机只要进行同样的 *** 作,在创建过程中改一下主机名即可。

5.安装FinalShell

为了方便对虚拟机进行 *** 作,我们要下载一个ssh工具,这里用FinalShell进行 *** 作。

下载网页为:https://www.hostbuf.com/t/988.html 选择windows版进行下载,安装过程不再赘述。

打开FinalShell,依次点击如下图标,选择ssh连接

使用密码连接,密码为安装centos8时设置的密码,我设置为123456

 

 开始连接到虚拟机,第一次连接选择接受虚拟机的密钥

 连接成功,后续对虚拟机的 *** 作都在FinalShell上进行。

 6.安装java1.8

由于hive是基于hadoop运行的,hadoop是用java写的,所以需要在虚拟机上安装java,为了和较新版本的hadoop和hive兼容,我们选择安装java1.8版本。到华为的镜像站上下载java1.8的安装包。

可以直接点击下载链接下载: https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz

下载好后在/usr目录下创建java文件夹,然后在FinalShell中进入该目录,把文件拖动到该目录下完成上传。

mkdir /usr/java
cd /usr/java

用tar命令进行解压

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

解压完成后出现jdk文件,我们把压缩包删除,只留下jdk文件,节省后面进行文件夹复制的时间。

rm jdk-8u151-linux-x64.tar.gz

 然后进行java的环境变量设置,到~/.bashrc中添加java环境变量如下:

vi ~/.bashrc
export JAVA_HOME=/usr/java/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

 source一下使文件生效

source ~/.bashrc

输入 java -version命令可以看到java安装成功

 7.安装hadoop

到清华镜像站中下载hadoop安装包,下载链接如下:

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/hadoop-3.3.1.tar.gz

在根目录下建立export文件夹,在export文件夹下建立sever、data、software三个文件夹,我们将hadoop安装在server目录下。

 上传安装包到/export/server下并解压

tar zxvf hadoop-3.3.1.tar.gz

删除压缩文件方便后续将hadoop复制到其他机器

rm -f hadoop-3.3.1.tar.gz

配置环境变量,这次我们在/etc/profile中配置hadoop的环境变量

vi /etc/profile

添加如下内容:

export HADOOP_HOME=/export/server/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source一下以使文件生效

source /etc/profile

输入hadoop version命令可以看到安装成功

 8.配置hadoop

我们配置的是一个hadoop集群,一共需要设置6个文件的内容,这里不对配置内容做详细的说明。

进入hadoop的配置文件目录下

cd /export/server/hadoop-3.3.1/etc/hadoop

(1)hadoop-env.sh

在该文件中添加如下内容:

export JAVA_HOME=/usr/java/jdk1.8.0_151

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

(2)core-site.xml

把configuration修改如下:


        
                fs.defaultFS
                hdfs://node4:8020
        
        
                hadoop.tmp.dir
                /export/data/hadoop-3.3.1
        
        
                hadoop.http.staticuser.user
                root
        
        
            hadoop.proxyuser.root.hosts
            *
        
        
            hadoop.proxyuser.root.groups
            *
          

(3)hdfs-site.xml

把configuration修改如下:


        
                dfs.namenode.secondary.http-address
                node5:9868
        

(4)mapred-site.xml

把configuration修改如下:


        
                mapreduce.framework.name
                yarn
        
        
                yarn.app.mapreduce.am.env
                HADOOP_MAPRED_HOME=${HADOOP_HOME}
        
        
                mapreduce.map.env
                HADOOP_MAPRED_HOME=${HADOOP_HOME}
        
        
                mapreduce.reduce.env
                HADOOP_MAPRED_HOME=${HADOOP_HOME}
        

(5)yarn-site.xml

把configuration修改如下:


        
                yarn.resourcemanager.hostname
                node4
        
        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        
        
                yarn.scheduler.minimum-allocation-mb
                512
        
        
                yarn.scheduler.maximum-allocation-mb
                2048
        
        
                yarn.nodemanager.vmem-pmem-ratio
                4
        

(6) 在该目录下新建一个文件workers,添加集群各个机器的主机名如下

node4
node5
node6

9.设置ssh和防火墙

为了搭建hadoop集群,需要让node4能跟三台机器都进行ssh免密通信,这样才能正常启动和关闭hadoop,如果不设置node4自己的ssh通信,在启动和关闭hadoop时会提示没有权限。

首先设置node4的hosts文件,把三台机器的ip和主机名对应关系添加到/etc/hosts文件。这里的ip地址是新建系统时随机生成的。可以通过ip addr命令查看机器ip地址。

192.168.123.216 node4
192.168.123.50 node5
192.168.123.204 node6

在node4上用ssh-keygen -t rsa命令生成ssh的公钥和私钥,命令会询问你生成的地址和是否设置口令,这里采用默认的地址,不设置口令,直接回车即可。然后用ssh-copy-id 用户名@主机名命令把公钥分发到node5和node6。

ssh-keygen -t rsa
ssh-copy-id root@node4
ssh-copy-id root@node5
ssh-copy-id root@node6

 接着在关闭三台机器的防火墙并设置禁止防火墙自启动,可以用其他两台机器可以用ssh直接在原窗口登录设置,然后按ctrl+D退出登录。

systemctl stop firewalld.service
systemctl disable firewalld.service 

10.配置其他机器的hadoop

在其他机器上配置hadoop较简单,只需要把node4上配置好的hadoop文件、Java文件和环境变量文件通过scp命令复制过去即可。

scp命令中, -r 表示递归地复制整个文件夹,后面第一个参数是代复制的文件夹或文件,第二个参数是用户名@主机名:目标目录 

scp -r /export root@node5:/
scp -r /usr/java root@node5:/usr
scp -r ~/.bashrc root@node5:~
scp -r /etc/profile root@node5:/etc

scp -r /export root@node6:/
scp -r /usr/java root@node6:/usr
scp -r ~/.bashrc root@node6:~
scp -r /etc/profile root@node6:/etc

11.启动hadoop

首先进行初始化:

hdfs namenode -format

 然后启动hadoop

start-all.sh

这时使用jps命令查看后台运行的java进程是可以看到已经启动成功了,node4上运行了hadoop4个节点的java进程。

 hadoop提供了WebUI可以更好地管理hadoop程序,通过在宿主机即windows系统访问node4的9870端口和8088端口可以看到hdfs文件管理界面和yarn资源管理界面。

最后用命令关闭hadoop。

stop-all.sh

12.安装mysql

hive有三种安装模式,这里采用最常用的远程安装模式,需要先安装一个数据库,我们安装mysql8.0版本的数据库。

我们用rpm的方式进行安装。首先进入到/export/software目录,创建mysql文件夹,然后在该文件夹中下载mysql的rpm包。

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

然后安装

rpm -ivh mysql-community-release-el7-5.noarch.rpm

然后用yum安装mysql服务器,中间询问都回y

yum install mysql-server

初始化mysql

mysqld --initialize

修改/var/lib/mysql/的权限。由于初始化后/var/lib/mysql的下文件的所有者都是root,如果不修改所有者和所有组是mysql的话,启动mysql服务时日志里会报没有权限的错误。

chown -R mysql:mysql /var/lib/mysql

启动mysql服务

systemctl start mysqld

 查看mysql服务运行状态

systemctl status mysqld

 看到状态为active表示mysql服务成功启动了。接下来登录mysql,首先到mysql的日志中记录下初始化时生成的临时密码

vi /var/log/mysql/mysqld.log

 然后登录mysql

mysql -u root -p

 输入复制的临时密码登录,然后修改密码。

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

 接下来修改数据库中mysql库的远程连接权限,首先进入mysql库

USE mysql;

新建用户root

CREATE USER 'root'@'%' IDENTIFIED BY '123456';

然后赋予root权限

GRANT ALL ON *.* TO 'root'@'%';

 刷新权限

FLUSH PRIVILEGES; 

 接下来退出mysql,设置mysql开机自启动

systemctl enable mysqld

可以通过下面命令查看是否设置成功

systemctl list-unit-files | grep mysqld

13.安装hive

到镜像站上下载hive安装包,下载链接如下:

https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

上到node4的/export/server文件夹下,解压缩

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

为了方便 *** 作,我们把文件夹名字改为hive

mv apache-hive-3.1.2-bin hive

到MySQL :: Download Connector/J下载jdbc驱动,用于hive连接数据库

 下载后在windows解压,把mysql-connector-java-8.0.26.jar文件上传到hive的lib文件夹下

 为了解决hive和hadoop之间的guava版本差异,我们把hadoop中较新版本的guava替换到hive中

cd /export/server/hive
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.1/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

接着修改hive的环境变量文件

cd /export/server/hive/conf
mv hive-env.sh.template hive-env.sh
vi hive-env.sh

将以下代码添加到hive-env.sh文件中 

export HADOOP_HOME=/export/server/hadoop-3.3.1
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib

 新建一个hive-site.xml文件配置mysql等相关信息

vi hive-site.xml

在hive-site.xml中添加如下代码:


        
                javax.jdo.option.ConnectionURL
	 jdbc:mysql://node4:3306/hive?createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&serverTimezone=GMT&useSSL=false&useUnicode=true&characterEncoding=UTF-8
        

        
                javax.jdo.option.ConnectionDriverName
                com.mysql.cj.jdbc.Driver
        

        
                javax.jdo.option.ConnectionUserName
                root
        

        
                javax.jdo.option.ConnectionPassword
                123456
        

        
                hive.server2.thrift.bind.host
                node4
        

        
                hive.metastore.uris
                thrift://node4:9083
        

        
                hive.metastore.event.db.notification.api.auth
                false
        

        
                hive.metastore.schema.verification
                false
        
        
                hive.server2.enable.doAs 
                false
        

为了方便在命令行 *** 作,我们在/etc/profile中添加如下hive的环境变量

export HIVE_HOME=/export/server/hive
export PATH=$PATH:$HIVE_HOME/bin

记得source /etc/profile使文件生效

接着在命令行初始化hive

schematool -initSchema -dbType mysql -verbos

初始化成功在mysql数据库的hive库中会看到74张表

 14.启动hive

要运行hive要先启动hadoop,因为hive是基于hadoop运行的。把另外node5、node6开启,然后用start-all.sh启动hadoop

要运行hive需要先启动hive的metastore服务,前台启动的命令如下,运行时会一直占用窗口

hive --service metastore

 metastore服务也可以用如下命令后台启动,并把日志输出到当前目录下的nohub.out文件

nohup hive --service metastore &

我们另外开一个ssh连接启动hive,在命令行输入hive回车,进入hive的命令行模式,表示hive启动成功。

另外,hive官方推荐使用第二代客户端beeline,beeline比hive有更好的性能和安全性。

启动beeline前除了metastore服务外,还需要再启动hiveserver2服务

hive --service hiveserver2

这条命令也是前台运行的,由于hiveserver2的启动需要时间,我们用命令查看10000端口的状态,当出现端口活动时表示hiveserver2启动成功。

netstat -nlpt|grep 10000

另外打开一个窗口连接到node4,输入beeline启动beeline,然后用以下命令进行连接

! connect jdbc:hive2://node4:10000

 用户名和密码为空即可,然后出现 0: jdbc:hive2://node4:10000> 的命令行模式表示连接成功。

这样,hadoop和hive就在虚拟机上安装成功了!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5503251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存