CentOS 安装 HaDoop 2.10.1 伪分布式 + Hive 3.1.2 + Spark 2.4.8

一、准备

1.1、介绍

名称 版本 说明
centos 7.9 随便无所谓
openjdk 1.8.0_291 版本1.8x即可
hadoop 2.10.1 版本自己看着办
spark 2.4.8 版本自己看着办
hive 3.1.2 版本自己看着办

1.2、机器规格

CPU 内存 系统盘 数据盘 Mysql数据盘
16c 64G 200G 6T×4 200G

二、安装 OpenJDK

2.1、安装 OpenJdk

mkdir -p /usr/java
# 解压
tar xvf jdk-8u291-linux-x64.tar.gz
# 移动到刚刚创建好目录
mv jdk1.8.0_291/ /usr/java/

三、安装 HaDoop 伪分布式模式

  • 伪分布式是完全分布式的特例,只有一个节点。

3.1、配置环境变量

cat <<'EOF'>> /etc/profile
# JDK
export JAVA_HOME=/usr/java/jdk1.8.0_291
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

# hadoop
export HADOOP_HOME=/usr/local/hadoop
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$HADOOP_HOME/bin:$PATH

# spark
export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin:$PATH

# hive
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
EOF

# 刷新环境变量
source /etc/profile

3.2、下载 hadoop

# 下载到本地
wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz
# 解压
tar xvf hadoop-2.10.1.tar.gz
# 移动
mv hadoop-2.10.1 /usr/local/hadoop

2.4、配置文件

  • 配置文件目录 /usr/local/hadoop/etc/hadoop
2.4.1、core-site.xml 配置
# 直接复制黏贴即可
cat <<'EOF'>> /usr/local/hadoop/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://127.0.0.1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
    </property>
</configuration>
EOF
2.4.2、hdfs-site.xml 配置
  • 我这里多配置路径因为我多磁盘,如果只有一个磁盘修改为一个即可
  • 多磁盘配置成功会叠加,我这里每块硬盘6T,弄起来差不多20T样子
# 直接复制黏贴即可
cat <<'EOF'>> /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>
            /hdfs-01/name,
            /hdfs-02/name,
            /hdfs-03/name,
            /hdfs-04/name
        </value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>
            /hdfs-01/data,
            /hdfs-02/data,
            /hdfs-03/data,
            /hdfs-04/data
        </value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
EOF
2.4.3、mapred-site.xml 配置
  • 如果想使用yarn 则需要编辑下面两个配置文件
# 直接复制黏贴即可
cat <<'EOF'>> /usr/local/hadoop/etc/hadoop/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
EOF
2.4.4、yarn-site.xml 配置
  • 如果想使用yarn 则需要编辑下面两个配置文件
# 直接复制黏贴即可
cat <<'EOF'>> /usr/local/hadoop/etc/hadoop/yarn-site.xml
<?xml version="1.0"?>
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
EOF
2.4.5、hadoop-env.sh 配置
  • 修改 hadoop-env.sh
  • 这里自己手动去修改
vim hadoop-env.sh
将 export JAVA_HOME=${JAVA_HOME} 修改为固定地址,通过环境变量可能无法启动
export JAVA_HOME=/usr/java/jdk1.8.0_291

3.3、创建相关目录

mkdir -p /usr/local/hadoop/tmp

3.4、免密登录

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

# 再验证ssh localhost是否能免密登录。
root@aka:/usr/local/hadoop/etc/hadoop$ ssh localhost
Last login: Tue Jun 15 20:47:42 2021 from 112.49.185.121

3.5、格式化

# 格式化只做一次即可,再次格式化会丢失datanode的数据
hdfs namenode -format

3.6、启动 DFS

root@aka:~$ /usr/local/hadoop/sbin/start-dfs.sh
Starting namenodes on [localhost]
localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-172-16-8-97.out
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-172-16-8-97.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-172-16-8-97.out

3.7、启动 YARN

root@aka:~$ /usr/local/hadoop/sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-172-16-8-97.out
localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-172-16-8-97.out

3.8、停止命令

# 停止 dfs
/usr/local/hadoop/sbin/stop-dfs.sh
# 停止 yarn
/usr/local/hadoop/sbin/stop-yarn.sh
# 停止全部
/usr/local/hadoop/sbin/stop-all.sh

3.9、查看 JPS

root@aka:~$ jps
24416 SecondaryNameNode
24194 DataNode
24709 NodeManager
25063 Jps
24601 ResourceManager
24047 NameNode

3.10、WEB 访问页面

名称 访问地址
HDFS管理界面 http://机器ip地址:50070/
yarn管理界面 http://机器ip地址:8088
SecondaryNameNode管理界面 http://机器ip地址:50090/

2qsg7n.png

3.11、测试数据

cat <<'EOF'>> /root/hdfs_test
hello world
hello hadoop
EOF

3.12、创建目录

root@aka:~$ hdfs dfs -mkdir /input
# 查看是否创建成功
root@aka:~$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2021-06-15 21:26 /input

3.13、上传测试文件到 HDFS

root@aka:~$ hdfs dfs -put /root/hdfs_test /input
# 查看 hdfs 目录下文件
root@aka:~$ hdfs dfs -ls /input
Found 1 items
-rw-r--r--   1 root supergroup         25 2021-06-15 21:28 /input/hdfs_test

3.14、运行一次计算

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input/hdfs_test /output
# 如果报错先删除 /output
hdfs dfs -rm -r /output
# 查看结果
root@aka:~$ hdfs dfs -cat /output/part-r-00000
hadoop  1
hello   2
world   1

四、Hive 安装

4.1、安装 hive

# 下载 hive
wget https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
# 解压
tar xvf apache-hive-3.1.2-bin.tar.gz
# 移动
mv apache-hive-3.1.2-bin /usr/local/hive

4.2、下载 Mysql 驱动

# 下载
wget https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.49.tar.gz
# 解压
tar xvf mysql-connector-java-5.1.49.tar.gz
# 移动
mv mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar /usr/local/hive/lib/

4.3、配置文件修改 hive-env

# 添加以下内容
cat <<'EOF'>> /usr/local/hive/conf/hive-env.sh
# 配置HADOOP_HOME路径
export HADOOP_HOME=/usr/local/hadoop
# 配置HIVE_CONF_DIR路径
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
EOF

4.4、配置文件修改 hive-site.xml

  • 数据库要么用rds 要么自己搭建,内容看自己需求设置
cat <<'EOF'>> /usr/local/hive/conf/hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- hdfs存储目录 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>
  <!-- hdfs存储目录 -->
  <property>
    <name>hive.exec.scratchdir</name>
    <value>/user/hive</value>
  </property>
  <!-- jdbc url配置 -->
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
  </property>
  <!-- 设置jdbc驱动 -->
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <!-- jdbc连接用户名 -->
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  <!-- jdbc连接密码 -->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>aka123</value>
  </property>
  <!-- 该属性为空表示嵌入模式或本地模式,否则为远程模式 -->
  <property>
    <name>hive.metastore.uris</name>
    <value></value>
  </property>
  <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
    <description></description>
  </property>
</configuration>
EOF

4.5、HDFS 创建 Hive 目录

# 创建目录
hdfs dfs -mkdir /user/hive
hdfs dfs -mkdir /user/hive/warehouse
# 赋予权限
hdfs dfs -chmod 777 /user/hive
hdfs dfs -chmod 777 /user/hive/warehouse

4.6、初始化 Hive

schematool -dbType mysql -initSchema

4.7、进入 Hive 测试

# 进入 hive,只需输入 hive 即可

# 创建测试表
hive> create database db_hiveTest;
OK
Time taken: 0.603 seconds

# 显示刚刚创建的表
hive> show databases;
OK
db_hivetest
default
Time taken: 0.495 seconds, Fetched: 2 row(s)

五、Spark 安装

5.1、安装 Spark

# 下载 hive
wget https://mirrors.bfsu.edu.cn/apache/spark/spark-2.4.8/spark-2.4.8-bin-hadoop2.7.tgz
# 解压
tar xvf spark-2.4.8-bin-hadoop2.7.tgz
# 移动
mv spark-2.4.8-bin-hadoop2.7 /usr/local/spark

5.2、配置文件

  • 根据自己需求修改
  • 注意:PYSPARK_PYTHON 设置指定 python 版本,默认请注释
  • 指定 Python 版本 不建议抖机灵覆盖系统自带 python 版本 否则各种错误很难说
# 复制黏贴即可
cat <<'EOF'>> /usr/local/spark/conf/spark-env.sh 
#!/usr/bin/env bash
# jdk 路径
export JAVA_HOME=/usr/java/jdk1.8.0_291
# 主节点的IP
SPARK_MASTER_IP=127.0.0.1
# 主节点的端口号,用来与worker通信
SPARK_MASTER_PORT=7077
# 每一个worker进程所能管理的核数
SPARK_WORKER_CORES=3
# 每一个worker进程所能管理的内存数
SPARK_WORKER_MEMORY=2G
# 每个节点启动worker的实例数
SPARK_WORKER_INSTANCES=1
# worker的工作目录区
SPARK_WORKER_DIR=/usr/local/spark/conf
# 指定 Python 版本
export PYSPARK_PYTHON=/root/.pyenv/versions/3.6.5/bin/python
EOF

5.3、查看 JPS

  • 如果出现 master 与 slave 即可
root@~$ jps
3073 NodeManager
2502 DataNode
27735 Worker
2762 SecondaryNameNode
27645 Master
2958 ResourceManager
2383 NameNode
28175 Jps

5.4、使用 Spark

  • 有 pyspark 和 spark 之分
  • 下面演示 pyspark
  • 指定 Python 版本最好用 pyenv 安装指定版本,在spark-env.sh 修改 PYSPARK_PYTHON
  • 需要安装 pyen 参考这篇文章 https://www.akiraka.net/python/201.html
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.8
      /_/
Using Python version 3.6.5 (default, Nov 16 2020 22:23:17)
SparkSession available as 'spark'.
>>> a="hello spark"
>>> print a
hello spark

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/hadoop/1117.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
CentOS 安装 HaDoop 2.10.1 伪分布式 + Hive 3.1.2 + Spark 2.4.8
一、准备 1.1、介绍 名称 版本 说明 centos 7.9 随便无所谓 openjdk 1.8.0_291 版本1.8x即可 hadoop 2.10.1 版本自己看着办 spark 2.4.8 版本自……
<<上一篇
下一篇>>