三台ubuntu22.0.4虚拟机搭建Hadoop+Hive集群

打印 上一主题 下一主题

主题 972|帖子 972|积分 2916


前言

在搭建 Hadoop 和 Hive 集群的过程中,笔者碰到了一些常见的坑。为了资助其他同学淘汰踩坑的时机,特此总结这篇文章,希望能资助各人顺利完成情况搭建。

Hadoop 集群搭建

1. 创建虚拟机

利用 VMware 创建一台至少 2 核 4 GB 内存的 Ubuntu 虚拟机,主机命名为 master,然后克隆两台虚拟机,分别命名为 slave1 和 slave2。
1.1 怎样更改主机名

可视化界面更改

点击设置,选择 “关于”,然后点击 “设备名称” 进行修改。

终端界面更改

执行以下下令编辑主机名:
  1. vim /etc/hostname
复制代码
将文件中的内容更换为新的主机名。
1.2 修改 /etc/hosts 文件

在全部三台主机上都必要修改此文件。利用 ifconfig 查看每台机器的局域网 IP 地址,然后编辑 hosts 文件:
  1. vim /etc/hosts
复制代码
以下是修改示例,记得将 IP 地址更换为自己机器的现实 IP:
  1. 192.168.219.128 master
  2. 192.168.219.129 slave1
  3. 192.168.219.130 slave2
复制代码
修改完后,重启每台主机:
  1. reboot
复制代码

2. 配置 SSH 免密登录

为三台机器配置 SSH 密钥,实现远程无密码访问。
2.1 安装 SSH 服务

  1. sudo apt-get install openssh-server  # 安装 SSH 服务
  2. sudo /etc/init.d/ssh restart  # 启动 SSH 服务
  3. sudo ufw disable   # 关闭防火墙
复制代码
2.2 生成 SSH 密钥并分发

在每台节点上生成 SSH 密钥,并将公钥分发到其他机器。
首老师成密钥:
  1. ssh localhost
  2. cd ~/.ssh         
  3. rm ./id_rsa*                           
  4. ssh-keygen -t rsa
复制代码
然后将公钥添加到 authorized_keys 文件:
  1. cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
复制代码
接着将 master 主机上的公钥传送到 slave1 和 slave2:
  1. scp ~/.ssh/id_rsa.pub hadoop@slave1:~/
  2. scp ~/.ssh/id_rsa.pub hadoop@slave2:~/
复制代码
末了,在 slave1 和 slave2 上执行以下下令:
  1. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
复制代码
这样就完成了免密登录配置。

3. 安装 Java 情况

  1. sudo apt update
  2. sudo apt install openjdk-8-jdk
复制代码

4. 安装 Hadoop

可以通过 wget 下载 Hadoop,但可能速率较慢。发起在本地官网下载,然后上传到虚拟机。
  1. wget https://downloads.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
  2. tar -xzvf hadoop-3.3.5.tar.gz
  3. sudo mv hadoop-3.3.5 /usr/local/hadoop
复制代码

5. 配置情况变量

  1. vim ~/.bashrc
复制代码
编辑 ~/.bashrc 文件,添加以下内容:
  1. export HADOOP_HOME=/usr/local/hadoop
  2. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  3. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
复制代码
使配置生效:
  1. source ~/.bashrc
复制代码

6. 配置 Hadoop

在 /usr/local/hadoop/etc/hadoop/ 目次下配置以下文件:
6.1 core-site.xml

  1. <configuration>
  2.     <property>
  3.         <name>fs.defaultFS</name>
  4.         <value>hdfs://master:9000</value>
  5.     </property>
  6.     <property>
  7.         <name>hadoop.proxyuser.hadoop.hosts</name>
  8.         <value>*</value>
  9.     </property>
  10.     <property>
  11.         <name>hadoop.proxyuser.hadoop.groups</name>
  12.         <value>*</value>
  13.     </property>
  14. </configuration>
复制代码
6.2 hdfs-site.xml

  1. <configuration>
  2.     <property>
  3.         <name>dfs.replication</name>
  4.         <value>2</value>
  5.     </property>
  6.     <property>
  7.         <name>dfs.namenode.name.dir</name>
  8.         <value>file:///usr/local/hadoop/hdfs/namenode</value>
  9.     </property>
  10.     <property>
  11.         <name>dfs.datanode.data.dir</name>
  12.         <value>file:///usr/local/hadoop/hdfs/datanode</value>
  13.     </property>
  14. </configuration>
复制代码
6.3 mapred-site.xml

  1. <configuration>
  2.     <property>
  3.         <name>mapreduce.framework.name</name>
  4.         <value>yarn</value>
  5.     </property>
  6.     <property>
  7.         <name>yarn.app.mapreduce.am.env</name>
  8.         <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  9.     </property>
  10.     <property>
  11.         <name>mapreduce.map.env</name>
  12.         <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  13.     </property>
  14.     <property>
  15.         <name>mapreduce.reduce.env</name>
  16.         <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  17.     </property>
  18. </configuration>
复制代码
6.4 yarn-site.xml

  1. <configuration>
  2.     <property>
  3.         <name>yarn.nodemanager.aux-services</name>
  4.         <value>mapreduce_shuffle</value>
  5.     </property>
  6.     <property>
  7.         <name>yarn.scheduler.maximum-allocation-mb</name>
  8.         <value>2048</value>
  9.     </property>
  10.     <property>
  11.         <name>yarn.scheduler.minimum-allocation-mb</name>
  12.         <value>2048</value>
  13.     </property>
  14.     <property>
  15.         <name>yarn.nodemanager.vmem-pmem-ratio</name>
  16.         <value>2.1</value>
  17.     </property>
  18.     <property>
  19.         <name>mapred.child.java.opts</name>
  20.         <value>-Xmx1024m</value>
  21.     </property>
  22.     <property>
  23.         <name>yarn.nodemanager.resource.memory-mb</name>
  24.         <value>4096</value>
  25.     </property>
  26. </configuration>
复制代码
6.5 workers

  1. master
  2. slave1
  3. slave2
复制代码
6.6 hadoop-env.sh 和 yarn-env.sh

编辑 hadoop-env.sh 和 yarn-env.sh,将以下内容添加进去:
  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
复制代码

7. 格式化 HDFS

在主节点执行以下下令:
  1. hdfs namenode -format
复制代码
在两台从节点执行以下下令:
  1. hdfs datanode -format
复制代码

8. 启动 Hadoop

启动 Hadoop 的 HDFS 和 YARN:
  1. start-dfs.sh
  2. start-yarn.sh
复制代码
通过执行 jps 下令检查是否启动乐成。

Hive 配置

1. 安装 MySQL(用于存储元数据)

Hive 必要一个关系型数据库来存储元数据。这里利用 MySQL。
1.1 安装 MySQL

  1. sudo apt install mysql-server
  2. sudo mysql_secure_installation
复制代码
1.2 创建 Hive 数据库和用户

  1. CREATE DATABASE hive;
  2. CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword';
  3. GRANT ALL PRIVILEGES ON hive.* TO 'hiveuser'@'localhost';
  4. FLUSH PRIVILEGES;
复制代码
2. 安装 Hive

  1. wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
  2. tar -xzvf apache-hive-3.1.2-bin.tar.gz
  3. sudo mv apache-hive-3.1.2-bin /usr/local/hive
复制代码
3. 配置 Hive

3.1 修改 hive-site.xml

  1. <configuration>
  2.     <property>
  3.         <name>javax.jdo.option.ConnectionURL</name>
  4.         <value>jdbc:mysql://localhost:3306/hive?useSSL=false</value>
  5.     </property>
  6.     <property>
  7.         <name>javax.jdo.option.ConnectionDriver.Name</name>
  8.         <value>com.mysql.cj.jdbc.Driver</value>
  9.     </property>
  10.     <property>
  11.         <name>javax.jdo.option.ConnectionUserName</name>
  12.         <value>hiveuser</value>
  13.     </property>
  14.     <property>
  15.         <name>javax.jdo.option.ConnectionPassword</name>
  16.         <value>hivepassword</value>
  17.     </property>
  18. </configuration>
复制代码
3.2 设置情况变量

编辑 Hive 情况变量配置文件,确保 Hive 能精确识别 Hadoop 和 Hive 的配置文件路径。
  1. mv /usr/local/hive/conf/hive-env.sh.template /usr/local/hive/conf/hive-env.sh
  2. vi /usr/local/hive/conf/hive-env.sh
复制代码
在 hive-env.sh 中追加以下两行内容:
  1. export HADOOP_HOME=/usr/local/hadoop
  2. export HIVE_CONF_DIR=/usr/local/hive/conf
复制代码
3.3 创建相关目次和赋予权限

在 Hadoop 中创建 Hive 所需的目次,并设置恰当的权限。此步调必须在启动 Hadoop 后执行:
  1. hadoop fs -mkdir /tmp
  2. hadoop fs -mkdir -p /user/hive/warehouse
  3. hadoop fs -chmod g+w /tmp
  4. hadoop fs -chmod g+w /user/hive/warehouse
复制代码
这些目次是 Hive 存储数据和临时文件的地方,必须确保 Hive 用户对它们有写入权限。
4. 初始化 Hive 数据库

  1. schematool -dbType mysql -initSchema
  2. nohup hive --service metastore &
  3. nohup hiveserver2 &
复制代码

5. 验证 Hive

验证 Hive 是否正常工作,可以利用 Beeline 或其他 Hive 客户端毗连到 HiveServer2。
5.1 利用 Beeline 毗连 HiveServer2

Beeline 是 Hive 提供的一个 JDBC 客户端工具,可以用来毗连 HiveServer2 并执行 SQL 查询。
  1. beeline -u jdbc:hive2://localhost:10000
复制代码
5.2 执行简单查询验证安装

毗连乐成后,执行以下查询以验证 Hive 是否正常运行:
  1. SHOW DATABASES;
复制代码
总结

本文介绍了怎样在 VMware 上搭建一个简单的 Hadoop 集群和 Hive 情况。关键步调包罗配置主机名、设置 SSH 免密登录、安装 Java 和 Hadoop、配置 Hive 与 MySQL,以及启动相关服务。完成这些步调后,你将拥有一个可以处理大数据的根本情况,能够利用 Hive 进行 SQL 查询和数据分析。假如碰到问题,可以根据提示办理或随时提问!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表