1.virtual box安装
到virtual box下载网页上下载virtual box和扩展程序
virtualbox.org/wiki/Downloads
下载好后点击打开安装程序
选择磁盘空间较大的地方进行安装,基本上不需要修改内容,一直下一步即可。
完成后打开的页面如下:
打开管理->全局设定->扩展 添加下载好的扩展程序(下图已添加)
2. 创建虚拟机
选择新建虚拟机创建一台虚拟机node1。
分配内存为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。
然后开始安装,安装过程需要比较长的时间。完成后点击重启系统。 选择第一个选项启动即可。
建立新的虚拟机只要进行同样的操作,在创建过程中改一下对应的主机名,安装hadoop集群需要另外新建两台虚拟机node2和node3,过程除了名字其他步骤都一样。
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目录下。
mkdir /export
cd /export
mkdir server
mkdir data
mkdir software
上传安装包到/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
用:wq退出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://node1: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
node2: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
node1
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文件内容改为各个机器的主机名
node1
node2
node3
9.设置ssh和防火墙
为了搭建hadoop集群,需要让node1能跟三台机器都进行ssh免密通信,这样才能正常启动和关闭hadoop,注意node1跟自己也要能ssh通信,否则在启动和关闭hadoop时会提示没有权限。
首先需要把三台机器都启动。在node1上用ssh-keygen -t rsa命令生成ssh的公钥和私钥,命令会询问你生成的地址和是否设置口令,这里采用默认的地址,不设置口令,过程直接回车即可。然后用ssh-copy-id 用户名@主机名命令把公钥分发到node5和node6。
ssh-keygen -t rsa
ssh-copy-id root@node1
ssh-copy-id root@node2
ssh-copy-id root@node3
接着在关闭三台机器的防火墙并设置禁止防火墙自启动,可以用其他两台机器可以用ssh直接在原窗口登录设置,然后按ctrl+D退出登录。
systemctl stop firewalld.service
systemctl disable firewalld.service
10.配置其他机器的hadoop
在其他机器上配置hadoop较简单,只需要把node1上配置好的hadoop文件、Java文件和环境变量文件通过scp命令复制过去即可。
scp命令中, -r 表示递归地复制整个文件夹,后面第一个参数是代复制的文件夹或文件,第二个参数是用户名@主机名:目标目录
scp -r /export root@node2:/
scp -r /usr/java root@node2:/usr
scp -r ~/.bashrc root@node2:~
scp -r /etc/profile root@node2:/etc
scp -r /export root@node3:/
scp -r /usr/java root@node3:/usr
scp -r ~/.bashrc root@node3:~
scp -r /etc/profile root@node3:/etc
11.启动hadoop
首先进行初始化:
hdfs namenode -format
然后启动hadoop
start-all.sh
这时使用jps命令查看后台运行的java进程是可以看到已经启动成功了,node1上运行了hadoop4个节点的java进程,关闭hadoop的命令为stop-all.sh
hadoop提供了WebUI可以更好地管理hadoop程序,通过在宿主机即windows系统访问node1的9870端口和8088端口可以看到hdfs文件管理界面和yarn资源管理界面。
12.安装mysql
hive有三种安装模式,这里采用最常用的远程安装模式,hive自带的derby数据库性能较差,我们安装mysql8.0版本的数据库作为数据库引擎。
mysql采用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
chmod -R 777 /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访问所有数据库和所有表的权限,*.*表示所有数据库的所有表,注意不能只给mysql库的权限。
GRANT ALL ON *.* TO 'root'@'%';
刷新权限
FLUSH PRIVILEGES;
接下来ctrl+D退出mysql,设置mysql开机自启动
systemctl enable 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://node1: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
node1
hive.metastore.uris
thrift://node1: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
14.启动hive
要运行hive需要先启动hadoop,因为hive是基于hadoop运行的,可以通过jps命令查看hadoop是否启动。
要运行hive需要先启动hive的metastore服务,前台启动的命令如下,运行时会一直占用窗口
hive --service metastore
metastore服务也可以用如下命令后台启动,并把日志输出到当前目录下的nohub.out文件
nohup hive --service metastore &
我们用前台启动,方便查看信息,所以需要另外开一个窗口启动hive,在命令行输入hive回车,进入hive的命令行模式,表示hive启动成功。
另外,hive官方推荐使用第二代客户端beeline,beeline比hive有更好的性能和安全性。
启动beeline前除了metastore服务外,还需要再启动hiveserver2服务
hive --service hiveserver2
这条命令也是前台运行的,会一直占用窗口。
hiveserver2的启动需要一段时间,出现以下四个session时,我们新建窗口用命令查看10000端口的状态,当出现端口活动时表示hiveserver2启动成功。
netstat -nlpt|grep 10000
在命令行输入beeline启动beeline,然后用以下命令进行连接
! connect jdbc:hive2://node1:10000
用户名和密码为空即可,然后出现 0: jdbc:hive2://node1:10000> 的命令行模式表示连接成功。
这样,hadoop和hive就在虚拟机上安装成功了!