云计算于大数据入门 —— 环境安装

云计算于大数据入门 —— 环境安装

本教程采用厦门大学数据库实验室的林子雨老师的同等开发环境:

所需软件及环境

所有文件整合的安装包我会放在文末

本案例所涉及的系统及软件

  1. Linux系统(Ubuntu16.04或14.04或18.04),这里使用 Ubuntu 20.04.5 LTS 系统进行安装

  2. MySQL(版本无要求),这里使用清华大学镜像源中的默认版本

  3. Hadoop(2.7.1或2.7.3,不能用3.0及以上版本,因为Sqoop工具无法支持Hadoop3.0以上版本) 由于教程较老,这里安装 2.10.2 版本

  4. HBase(1.1.2或1.1.5,HBase版本需要和Hadoop版本兼容)这里是用 2.5.3 版本

  5. Hive(1.2.1,Hive需要和Hadoop版本兼容,不要安装Hive3.0以上版本)这里使用 2.3.9 版本

  6. Sqoop(必须用1.4.6,注意,Sqoop无法支持Hadoop3.0以上和2.6以下版本)这里使用 Sqoop1 的 1.4.7 版本

  7. R(版本无要求)这里我们在后续使用的时候再安装

  8. Eclipse(版本无要求)

这里在安装的过程中默认我们已经安装了如下的一些初始环境:

sudo apt-get install buile-essential vim

镜像源切换

这里推荐使用最快速的镜像源,清华大学镜像源:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

Hardoop 安装

安装并配置 SSH

首先安装 SSH :

sudo apt-get install openssh-server

安装成功后使用如下命令登录本机:

ssh localhost

登录成功界面如下:

这里有些在进行 ssh 连接 localhost 的时候会出现如下错误:

ssh: connect to host localhost port 22: Connection refused

首先确定 openssh-server 是否安装:

sudo apt list --installed | grep openssh-server

显示如下说明已经安装:

查看 ssh 运行状态:

sudo service ssh status
# root

这里说明我们没有打开:

使用以下命令启动 sshd

sudo service ssh start

然后我们再次执行连接命令,出现如下报错:

ppqppl@localhost: Permission denied (publickey).

解决方法网上一搜一大把,基本是有两种方法,第一种只会影响到本用户所处的环境,第二种会影响到整个根目录(因为要修改 /etc 目录下的文件)

百度上搜到的答案同质化比较严重(基本是 sshkey ),谷歌上搜到的答案存在越扯越远脱离原问题的不足,也可能是因为大佬不屑于用简单的方法解决问题

这里直接给出最简单的解决 sshkey 方法:

操作步骤

首先会遇到很多教程没说明的两个坑(如果没有请无视该条)

家目录~下没有.ssh隐藏文件夹

使用 ssh localhost 命令登录一下本机,就能自动创建出.ssh文件夹

.ssh文件夹里没有authorized_keys文件

直接touch authorized_keys创建即可

(注意每台master和slave机器都要保证有.ssh和authorized_keys)

在master机器上,执行下行命令来生成密钥:

ssh-keygen -t rsa

此时会弹出几次提示语句:

第一次是自定义保存密钥的文件名,什么都不填继续回车就代表默认生成文件名为 id_rsa

第二次是自定义一个密码,该密码用在哪里本例不需要,所以直接回车,默认无密码就行

第三次是再确认一次刚刚设置的密码,继续直接回车

执行完毕后会在 ~/.ssh 目录下生成 id_rsa 和 id_rsa.pub 文件

执行下面命令将该密钥文件导入本机的已认证密码集中,并赋予权限以让密钥可用:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

将上一步生成的 id_rsa.pub 文件拷贝到其他 slave 机器上:

scp ~/.ssh/id_rsa.pub ppqppl@localhost:/home/ppqppl/.ssh

登录到每一台 slave 机器,执行与第 2 步中类似的命令

我们可以看到,我们已经解决了这个问题:

安装 JAVA 环境

下面给出三种安装 JDK 的方式,这里推荐使用第一种:

  1. 手动安装 JDK

这里我们需要从官网下载 JDK1.8 对应的 linux 系统的安装包,然后执行如下命令:

cd /usr/lib
sudo mksir jvm
cd ~
cd downloads
sudo tar -zxvf jdk安装包 -C /usr/lib/jvm

解压好之后如下:

然后我们在环境文件下添加如下命令:

sudo gedit ~/.bashrc # 打开环境配置文件
# 在末尾添加如下:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

如果在打开 ssh 后报错如下:

Unable to init server: 无法连接: 拒绝连接

(gedit:38615): Gtk-WARNING **: 10:10:50.917: cannot open display:

执行如下命令即可:

xhost local:gedit

如果出现如下:

non-network local connections being added to access control list

则解决问题

如果继续报错:

xhost: unable to open display “”

使用如下命令:

export DISPLAY=:0

然后再次执行上述命令解决问题

最后执行如下命令配置好 JAVA 环境:

source ~/.bashrc

我们可以使用 java -version 命令查看是否配置成功,出现如下就说明配置成功:

  1. 第二种安装方式

直接使用命令进行安装:

sudo apt-get install openjdk-7-jre openjdk-7-jdk

然后使用如下命令进行环境配置:

dpkg -L openjdk-7-jdk | grep '/bin/javac'
vim ~/.bashrc # 打开环境添加如下字段
export JAVA_HOME=JDK安装路径
# 最后引用环境变量
source ~/.bashrc
  1. 第三种安装方式

执行命令安装:

sudo apt-get install default-jre default-jdk

添加环境配置:

vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/default-java
source ~/.bashrc

安装 Hadoop2

Hadoop 官网:Hadoop 2

这里我们首先需要在 Hadoop 镜像源中下载好对应的版本,然后安装到 /usr/local 路径中:

sudo tar -zxf hadoop-2.10.2.tar.gz -C /usr/local
cd /usr/local
sudo mv ./hadoop-2.10.2/ ./hadoop
sudo chown -R 用户名 ./hadoop

Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

显示如下说明已经成功安装:

Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行,非分布式即单 Java 进程,方便进行调试

MySQL 安装

这里直接执行命令安装即可:

sudo apt-get install mysql-server  #安装mysql

启动和关闭 mysql 服务器:

service mysql start
service mysql stop

确认是否启动成功,mysql 节点处于 LISTEN 状态表示启动成功:

sudo netstat -tap | grep mysql

如果这里出现如下提示:

sudo: netstat:找不到命令

我们直接安装就可以解决:

sudo apt-get install net-tools

进入 MySQL 的 shell 界面:

mysql -u root -p

如果在打开 MySQL shell 界面时报错如下:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

一般出现这种情况多数是安装新版本 mysql,root 密码是随机的,也不是空密码,所以要通过查看随机密码进入,再进行修改原来的密码

这里我们用其他用户登录 MySQL,然后查看 user 表,修改密码格式即可:

# 查看 MySQL 自动创建的用户信息
sudo cat /etc/mysql/debian.cnf
# 用该用户进行登录
mysql -u 用户名 -p
输入密码
# 使用如下命令
use mysql;
select user,plugin from user;
# 执行如下命令
update user set plugin='mysql_native_password' where user='root'; # 修改其密码格式
select user,plugin from user; # 查询其用户
# 执行后刷新权限(可以理解为高并发,可能还没处理完数据让他缓存,就执行下一步操作可能会出错)
flush privileges;
# 增加 root 密码
alter user 'root'@'localhost' identified by 'ppqppl';
# 再次刷新权限
flush privileges;
# 退出并重启 MySQL 问题即可解决
exit
service mysql restart

流程如下:

下面需要解决利用 sqoop 导入 MySQL 中文乱码的问题(可以插入中文,但不能用 sqoop 导入中文)

导致导入时中文乱码的原因是character_set_server默认设置是latin1,如下图:

注意:这里如果要是显示如下,都是 utf8 就不需要执行此操作:

可以单个设置修改编码方式 set character_set_server=utf8; 但是重启会失效,建议按以下方式修改编码方式:

编辑配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下添加一行 character_set_server=utf8 。如下图

重启MySQL服务,登陆 MySQL,并查看 MySQL 目前设置的编码:

HBase 安装

HBase 官网:HBase

首先在官网下载 HBase 2 的最新版,然后进行安装:

sudo tar -zxf ./hbase-2.5.3-bin.tar.gz -C /usr/local
sudo mv /usr/local/hbase-2.5.3 /usr/local/hbase
# 修改环境变量
gedit ~/.bashrc
# 添加图下命令
export PATH=$PATH:/usr/local/hbase/bin
# 执行生效
source ~/.bashrc
# 添加 HBase 权限
cd /usr/local
# 将 hbase 下的所有文件的所有者改为ppqppl,ppqppl是当前用户的用户名
sudo chown -R ppqppl ./hbase
# 查看版本
/usr/local/hbase/bin/hbase version

出现如下,就说明安装成功:

Hive 安装

首先官网下载 Hive:Hive

然后执行如下命令进行安装:

sudo tar -zxvf ./apache-hive-1.2.1-bin.tar.gz -C /usr/local
cd /usr/local/
sudo mv apache-hive-1.2.1-bin hive
# 修改文件权限
sudo chown -R ppqppl hive
# 修改环境变量
gedit ~/.bashrc
# 添加如下内容
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
# 执行生效
source ~/.bashrc
# 修改 /usr/local/hive/conf 下的 hive-site.xml
cd /usr/local/hive/conf
mv hive-default.xml.template hive-default.xml
# 使用 vim 编辑器新建一个配置文件 hive-site.xml
cd /usr/local/hive/conf
vim hive-site.xml

在 hive-site.xml 中添加如下配置信息:

<?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>root</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>ppqppl</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

配置 MySQL

首先官网下载 MySQL 的 jdbc 驱动:MySQL jdbc下载

然后运行如下命令安装:

tar -zxvf mysql-connector-java-5.1.49.tar.gz
#将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下
cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar  /usr/local/hive/lib

启动并登陆 mysql shell:

#启动mysql服务
service mysql start
#登陆shell界面
mysql -u root -p

新建hive数据库

create database hive;

配置 mysql 允许 hive 接入:

# 将所有数据库的所有表的所有权限赋给 hive 用户,后面的 hive 是配置 hive-site.xml 中配置的连接密码
grant all on *.* to hive@localhost identified by 'hive';
# 刷新 mysql 系统权限关系表
flush privileges;

启动 Hive

启动 hive 之前,请先启动 hadoop 集群

首先我们需要在环境配置中添加如下配置:

sudo gedit ~/.bashrc
# 添加如下内容
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HIVE_HOME/bin
start-all.sh
hive

注意:我们这里已经配置了 PATH,所以,不要把 start-all.sh 和 hive 命令的路径加上。如果没有配置 PATH,请加上路径才能运行命令,比如,本教程 Hadoop 安装目录是“ /usr/local/hadoop ”,Hive 的安装目录是“ /usr/local/hive ”,因此,启动 hadoop 和 hive ,也可以使用下面带路径的方式:

cd /usr/local/hadoop
./sbin/start-all.sh
cd /usr/local/hive
./bin/hive

在启动 hadoop 时报错如下:

sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

这里需要修改 hadoop-env.sh

sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
# 将原本的 JAVA_HOME 替换为绝对路径就可以
#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121

如果启动 hadoop 再次出现如下报错:

resourcemanager running as process 3027. Stop it first.
localhost: nodemanager running as process 4265. Stop it first.

这里我们先运行如下命令,停止所有服务即可:

stop-all.sh

我们再次执行打开 hadoop 命令就不会报错

成功启动 hadoop 画面如下:

在启动 Hive 时,有可能会出现 Hive metastore database is not initialized 的错误,这里给出解决方案:

# 在终端执行如下命令
schematool -dbType mysql -initSchema

再次启动 Hive 即可,打开后显示如下:

Hive 里面的使用方法和 SQL 相同,只不过这里执行退出命令要先关闭 JVM ,执行时间较长

Sqoop 安装

首先官网下载 Sqoop:Sqoop

Sqoop 1 的最新版本到 1.4.7,Sqoop 2 的最新版本到 1.99.7,这里考虑兼容性选择安装 1.4.7 版本

然后执行如下命令进行安装:

#进入当前用户的用户目录
cd ~
#sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz文件下载后就被保存在该目录下面
cd 下载
#解压安装文件
sudo tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local
cd /usr/local
#修改文件名
sudo mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop
#修改文件夹属主,如果你当前登录用户名不是hadoop,请修改成你自己的用户名
sudo chown -R ppqppl sqoop

修改配置文件 sqoop-env.sh:

cd sqoop/conf/
#将sqoop-env-template.sh复制一份并命名为sqoop-env.sh
cat sqoop-env-template.sh  >> sqoop-env.sh
#编辑sqoop-env.sh
gedit sqoop-env.sh

修改 sqoop-env.sh 的如下信息,这里直接添加在后面也可以

export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive
#export ZOOCFGDIR= #如果读者配置了ZooKeeper,也需要在此配置ZooKeeper的路径

打开当前用户的环境变量配置文件:

gedit ~/.bashrc
# 添加如下:
export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SBT_HOME/bin:$SQOOP_HOME/bin
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib
# 执行下面命令让配置文件立即生效
source ~/.bashrc

将 mysql 驱动包拷贝到 SQOOP_HOME/lib:

#切换到下载路径,如果你下载的文件不在这个目录下,请切换到下载文件所保存的目录
cd ~/下载
#解压mysql驱动包
sudo tar -zxvf  mysql-connector-java-5.1.49.tar.gz
#这时就可以看到解压缩后得到的目录 mysql-connector-java-5.1.49
ls
cp ./mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar /usr/local/sqoop/lib

测试与 MySQL 的连接

# 首先确保启动 MySQL
service mysql start
# 然后就可以测试 sqoop 与 MySQL 之间的连接是否成功
sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P

显示画面如下说明连接成功:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ppqppl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值