【已解决】【大数据综合案例】上| Hive与MongoDB配置

发布于:2024-12-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

遇到的问题及解决方法

Hive

报错:sudo: 未知用户;HiveServer2启动失败;端口被占用

导入数据:通过JDBC连接Hive和MySQL,将数据从Hive导入MySQL。通过JDBC连接Hive,需要通过Hive的thrift服务实现跨语言访问Hive,实现thrift服务需要开启hiveserver2。

1. core-site.xml

首先,在Hadoop的配置文件core-site.xml中添加以下配置信息:

<property>
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>*</value>
</property>
<property>
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
</property>

2. 开启hiveserver2

 然后,开启Hadoop以后,在目录“/usr/local/hive”下,执行以下命令开启hiveserver2,并且设置默认端口为10000。

cd /usr/local/hive
./bin/hive --service hiveserver2 -hiveconf hive.server2.thrift.port=10000

 错误信息 sudo: 未知用户:hive 表明您尝试使用的用户 hive 在您的系统上不存在。在Linux系统中,sudo 命令用于以另一个用户的权限执行命令,但在这种情况下,系统找不到名为 hive 的用户。

以下是解决这个问题的步骤:

1. 创建 hive 用户

如果您的系统中没有 hive 用户,您需要创建一个。您可以使用 useradd 命令来创建用户:

sudo useradd -m hive

这个命令会创建一个新的用户 hive 并且为该用户创建一个主目录。

2. 设置 hive 用户的密码

创建用户后,您可能需要为该用户设置密码,以便能够通过 sudo 命令以该用户身份执行命令:

sudo passwd hive

按照提示输入密码,并确保记住这个密码,因为您可能需要在执行 sudo 命令时使用它。

【密码】hive

3. 配置 sudo 权限

为了让 hive 用户能够无密码使用 sudo,您需要编辑 /etc/sudoers 文件并添加相应的规则。您可以使用 visudo 命令来安全地编辑这个文件:

sudo visudo

visudo 编辑器中,添加以下行:

hive ALL=(ALL) NOPASSWD: ALL

这行规则允许 hive 用户在所有主机上作为所有用户执行所有命令而无需输入密码。

4. 重新尝试启动 HiveServer2

完成上述步骤后,您可以尝试再次以 hive 用户身份启动 HiveServer2:

sudo -u hive /usr/local/hive/bin/hive-service hiveserver2 -hiveconf hive.server2.thrift.port=10000

注意事项

  • 创建新用户和配置 sudo 权限需要管理员权限,因此确保您有足够的权限来执行这些操作。
  • 使用 visudo 编辑 /etc/sudoers 文件时要小心,因为错误的配置可能会导致 sudo 命令无法使用。
  • 如果您不需要为 hive 用户配置无密码 sudo 权限,您可以在执行命令时省略 sudo -u hive 部分,并直接以当前用户身份运行 HiveServer2,但您需要确保当前用户有权限访问和执行 Hive 的相关文件和命令。

3. 启动成功

启动时,当屏幕上出现“Hive Session ID = 6bd1726e-37c5-41fc-93ea-ef7e176b24f2”信息时,会停留较长的时间,需要出现几个“Hive Session ID=...”以后,Hive才会真正启动。启动成功以后,会出现如图所示信息。

4. 查看端口

启动结束后,使用如下命令查看10000号端口是否已经被占用:

sudo netstat -anp|grep 10000

如果显示10000号端口已经被占用(如图所示),则启动成功。

MongoDB

根据以上信息,系统上已经安装了 MongoDB 3.2.17 版本,但是在尝试更新软件包列表时遇到了一些问题。这些问题包括:

  1. MongoDB 3.2 仓库的公钥错误:系统无法验证 MongoDB 3.2 仓库的签名,因为缺少相应的公钥(NO_PUBKEY D68FA50FEA312927)。

  2. MongoDB 4.4 仓库被忽略apt-get update 命令忽略了 MongoDB 4.4 的仓库。

  3. Ubuntu Kylin 仓库连接超时:在尝试连接到 Ubuntu Kylin 仓库时出现了超时错误。

要解决这些问题,按照以下步骤操作:

解决 MongoDB 3.2 公钥错误

由于 MongoDB 3.2 版本已经不再受支持,删除指向该版本的仓库配置,并安装 MongoDB 4.4 或更高版本。

        1.删除 MongoDB 3.2 仓库配置: 编辑 /etc/apt/sources.list.d/ 目录下的 MongoDB 仓库配置文件,注释掉或删除指向 MongoDB 3.2 的行。

具体步骤:

  1. 打开终端。

  2. 使用文本编辑器打开 MongoDB 的仓库配置文件。通常,这个文件可能被命名为 mongodb-org-3.2.list 或者类似的名称。可以使用 nanovim 编辑器,或者你喜欢的任何编辑器。例如,使用 nano 编辑器的命令如下:

    sudo nano /etc/apt/sources.list.d/mongodb-org-3.2.list
  3. 在打开的文件中,您会看到类似下面的行:

    deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse
  4. 要注释掉这一行,使其不被 apt 使用,您需要在行的开头添加一个 # 符号,如下所示:

    # deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse
  5. 保存文件并退出编辑器。如果您使用的是 nano,可以通过按下 Ctrl + X,然后按 Y 确认保存更改,最后按 Enter 键退出。

  6. 一旦您注释掉了 MongoDB 3.2 的仓库配置,运行以下命令来更新您的软件包列表:

    sudo apt-get update

这样,您的系统就不会再尝试从 MongoDB 3.2 的仓库获取软件包了。如果您决定安装 MongoDB 4.4 或更高版本,确保您已经添加了对应版本的仓库配置和 GPG 密钥。

        2.添加 MongoDB 4.4 的 GPG 密钥

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

解决 MongoDB 4.4 仓库被忽略的问题

确保您的 MongoDB 4.4 仓库配置正确,并且没有被注释掉。使用以下命令更新软件包列表:

sudo apt-get update

解决 Ubuntu Kylin 仓库连接超时的问题

  1. 检查网络连接:确保您的网络连接正常。

  2. 更换仓库源:如果问题依旧,您可以尝试更换为其他镜像源,例如阿里云的 Ubuntu 镜像源。

  3. 暂时忽略 Ubuntu Kylin 仓库:如果 Ubuntu Kylin 仓库对您不是必需的,您可以暂时忽略它。

安装或升级 MongoDB

如果更新成功,现在可以安装或升级到 MongoDB 4.4:

sudo apt-get install -y mongodb-org

如果在执行这些步骤时遇到任何问题,或者 apt-get update 仍然报告错误,那么可能是由于网络问题或者 MongoDB 仓库的配置问题。在这种情况下,您可能需要检查您的网络连接,或者尝试使用其他镜像源。如果问题依旧存在,您可能需要联系您的网络服务提供商或寻求专业的网络技术支持。


网站公告

今日签到

点亮在社区的每一天
去签到