一.环境概述
- Linux发行版:Ubuntu
- 虚拟机应用:VMware Workstation Pro
- Hadoop版本:3.1.3|伪分布式集群
- JDK版本:JDK1.8.0_162
- Spark版本:2.4.0
- Scala版本:2.12.8
- Python版本:3.6.8 | 3.7.16
二.Ubuntu
2.1 光盘文件
首先进入链接Download Ubuntu Desktop | Download | Ubuntu进行镜像文件的下载
将完成下载的光盘镜像文件放入如下文件路径中:
D:\Program Files\Virtual Machines
- 该放置文件路径并不重要 可以自由选择
- 但需要记住该路径 因为后续需要指定
2.2 创建虚拟机
在VMware Workstation首页中选择创建虚拟机
选择典型推荐配置-下一步
安装来源-选择稍后安装操作系统-下一步
选择客户机操作系统-下一步
虚拟机名称与文件位置根据需求调整即可 而后点击下一步
选择磁盘容量 -拆分成多个文件 -下一步
创建好虚拟机基础设置后- 点击自定义硬件
选择CD文件 指定我们下载好的镜像文件[这儿需要使用我们在2.1中记录的文件路径]
点击启动虚拟机 语言项默认为英文 我此处选择了中文
更新和其他软件-点击继续即可
安装类型-点击现在安装即可
确认写入磁盘:
地区选择china-shanghai即可
设置用户名密码
而后进行等待即可完成安装:
三.Hadoop
3.1 Sudo
首先需要为hadoop创建用户并设置密码 打开终端输入如下命令
sudo useradd -m hadoop -s /bin/bash
此处若不使用sudo 将会提示权限不足
为刚创建的新用户hadoop 设置认证密码
passwd hadoop
- 此处我将用户hadoop的密码设置为hadoop
- 进行密码设置的时候命令行会出现提示“无效的密码:密码少于8个字符”“未通过字典检查”等等
- 通通可以无视
- 连续两次相同密码的输入后 完成密码的设置
为 hadoop 用户增加管理员权限
adduser hadoop sudo
切换到用户hadoop
3.2 SSH
在hadoop用户登录下 继续进行SSH的配置:
1、更新 apt
为了确保openssh-server 安装过程顺利进行,执行下面命令更新APT工具:
sudo apt-get update
将命令输入后,等待联网程序自动进行更新即可
当出现“完成”提示符时 进行下一步操作
2、安装 SSH
sudo apt-get install openssh-server
输入命令后 将会询问是否继续执行 回答Y即可
如上等待安装完成即可
3 、安装后,可以使用如下命令登陆本机
ssh localhost
此时会有如下提示(SSH 首次登陆提示) ,输入 yes
然后按提示输入密码 hadoop
这样就登陆到本机了
4 、配置 SSH 无密码登陆
exit #退出刚才的 ssh localhost模式
cd ~/.ssh/ #若没有该目录,请先执行一次 ssh localhost
ssh-keygen -t rsa #命令行会有提示 多次敲击回车键就可以向后推进 回车键意味着无密码
sudo cat ./id_rsa.pub >> ./authorized_keys # 加入授权
-
此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了
-
无密码登录是无法省略的 否则后续启动hadoop集群时会出现权限不足 需要认证的问题
-
省略无密码登录设置 后续启动hadoop集群时将会报错:localhost: root localhost: permission denied
3.3 JDK
下载jdk-8u162-linux-x64.tar文件地址:
Java Archive Downloads - Java SE 8 (oracle.com)
在本机中拥有JDK文件后 需将其传入虚拟机中
- 此处可借助VMwaretools工具 参考内容四
- 或是使用U盘在主机与虚拟机间进行文件的复制粘贴
1.首先在主机内复制文件
2.再将装载了我们虚拟机内所需文件的U盘 插入虚拟机中
3.再把文件复制在虚拟机中 弹出U盘即可完成文件转移
- 拥有tar文件后,便可离线进行文件的解压与安装
- 此处展示JDK的安装:
1、 解压 jdk
登录hadoop用户 使用特权命令sudo进行解压
sudo tar -zxvf jdk-8u162-linux-x64.tar.gz
2、设置 JDK 的环境变量
vi ~/.bashrc
确定JDK文件位置 在我的虚拟机中 解压后的jdk文件位于/opt文件夹路径下
因此在.bashrc 文件中添加:
export JAVA_HOME=/opt/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
3、使得添加的 JDK 的环境变量生效
source ~/.bashrc
4、查看 JDK 是否安装成功
java -version
完成检验 JDK已经安装成功
3.4 hadoop
下载hadoop-3.1.3.tar.gz文件地址:Apache Hadoop
登录hadoop用户 使用特权模式下的tar命令解压 hadoop
sudo tar -zxf ./hadoop-3.1.3.tar.gz
完成解压后的文件夹:
将文件夹名改为 hadoop 去除不必要的版本号信息 便于之后的工作
mv ./hadoop-3.1.3/ ./hadoop
修改文件权限 将文件分配给hadoop用户
sudo chown -R hadoop ./hadoop
需要将hadoop配置在环境变量 才能够使得其命令有效
在.bashrc 文件中添加:
export HADOOP_HOME=/opt/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使得环境变量的修改生效
source ~/.bashrc
查看 hadoop 版本信息
/opt/hadoop/bin/hadoop version
3.5 伪分布集群
1、进入到 hadoop 的安装目录
cd ./hadoop
2、登录拥有修改权限的账户 hadoop
su hadoop
3、修改配置文件 core-site.xml
sudo vi ./etc/hadoop/core-site.xml
在 core-site.xml 文件后加上:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/yt/桌面/files/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
4、登录拥有修改文件内容权限的账户hadoop
su hadoop
5、修改配置文件 hdfs-site.xml
vi ./etc/hadoop/hdfs-site.xml
在 hdfs-site.xml文件加上
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/yt/桌面/files/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/yt/桌面/files/hadoop/tmp/dfs/data</value>
</property>
</configuration>
6、修改sbin下配置
在Hadoop安装目录下找到sbin文件夹
在里面修改四个文件
在start-dfs.sh和stop-dfs.sh文件顶部添加:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh和stop-yarn.sh文件顶部添加:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
7、执行 NameNode 的格式化
./bin/hdfs namenode -format
观察到窗口中出现提示[successfully formatted]
[hadoop@:] sudo ./bin/hdfs namenode -format
格式化完成 在hadoop主文件夹下的tmp/name文件夹中 出现多个文件
8、调整文件权限
为文件夹添加权限
sudo chmod -R 777 ./logs
sudo chmod -R hadoop /opt/hadoop/tmp
9、启动 hadoop
sudo /opt/hadoop/sbin/start-all.sh
10、通过 jps 命令查看 hadoop 是否启动成功,如果同时显示有:DataNode、NodeManager、 NameNode、SecondaryNameNode 和ResourceManager,则说明已经启动成功。
jps
11、使用浏览器进入hadoop web界面
https:localhost:9870
12、停止 hadoop
进入到目录/opt/hadoop/sbin 运行:
sudo ./stop-all.sh
四.VMwaretools
4.1 安装
-
此部分展示安装VMwaretools工具的尝试
-
主要目的是通过拖拽实现win与虚拟机环境的文件传输
-
点开VM菜单 点击 虚拟机-安装VMware tools
-
将在文件目录中出现新磁盘 其中拥有如下文件
我们将所需的gz文件复制至桌面 方便使用终端寻找其位置
在终端打开 并输入如下指令
相同目录下将出现其对应的解压缩文件
双击进入该文件中 在这儿打开终端模式
sudo ./vmware-install.pl
而后对于交互窗口 如果没有特定的配置需求
一直按回车或是回复YES即可继续进行工具的安装 直到出现enjoy完成
点开VM菜单栏 点击虚拟机
下方的"安装VMware tools"按钮变成了"重新安装VMware tools"
4.2 使用
首先非虚拟机内存上建个文件夹 记住该文件的位置
点击菜单栏 虚拟机-设置-选项
选中"共享文件夹" 启用并点击”添加“
启用成功
而后在虚拟机的如下路径中:
其他\计算机\mnt\hgfs\
能够找到共享文件 该文件夹中与我们在主机中创建的文件夹拥有相同的结构与内容。
五.Spark
5.1 scala
命令行 输入密码hadoop用户下
su hadoop
进入压缩包文件路径
cd /opt
sudo tar命令完成解压缩
sudo tar -zxf scala-2.12.8.tgz
修改名称
sudo mv ./scala-2.12.8/ ./scala
修改配置文件
sudo vi ~/.bashrc
添加配置
使用source命令使得修改后的配置文件生效
source ~/.bashrc
测试是否安装成功 成功进入代码环境
5.2 spark
解压 Spark
cd /opt
sudo tar -zxf spark-2.4.0-bin-with.tgz
mv ./spark-2.4.0-bin-without-hadoop/ ./spark
进行简单的配置 对template文件进行复制后 使用vi编辑器修改spark-env.sh文件的配置
cd /opt/spark/conf
sudo cp spark-env.sh.template spark-env.sh
sudo vi spark-env.sh
在打开的vi编辑环境下:
export SCALA_HOME=/opt/scala
export LD_LIBRARY_PATH = $HADOOP_HOME/lib/native
export SPARK_LOCAL_DIRS=/opt/spark
export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath)
export JAVA_HOME=/opt/jdk1.8.0_162
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
export SPARK_MASTER_HOST=hostname
export SPARK_MASTER_PORT=7077
编辑环境变量
vi ~/.bashrc
在.bashrc 文件中添加:
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin
使其生效
source ~/.bashrc
编辑slaves
cd /opt/spark/conf
cp slaves.template slaves
vi slaves
将localhost注释掉 加入自己主机名称在该行下
#localhost
hostname
修改sbin目录下的spark-config.sh 添加jdk的环境变量
export JAVA_HOME=/opt/jdk1.8.0_162
启动spark
cd /opt/spark/bin
./spark-shell
能够进行简单的文件读取与计算 Spark测试安装成功:
5.3 pyspark
首先需要安装配置Python环境
-
运行pyspark必须使用python旧版本 不可使用3.10版本
-
否则会报错TypeErroe:“bytes” object cannot be interpreted as an integer
-
完成python3.7版本安装后 (此处安装参考当前博客内容第六部分 Python)
-
进行pyspark文件测试 能够进行简单文件读取与计算
若想在Python环境下直接启动pyspark 需要进行如下环境变量配置:
sudo vi ~/.bashrc
在打开的环境下添加如下语句:
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/pyspark:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH
使用source语句使得环境配置生效
source ~/.bashrc
通过导入语句 测试Python环境下能够直接运行pyspark:
5.4 伪分布式
依据前述安装过程 已经完成了伪分布式的配置
将日志文件的打印等级调整一下
cd /opt/spark/conf
cp log4j.properties.template log4j.properties
vi log4j.properties
将 log4j.rootcategory=INFO,console 改为: log4j.rootcategory=WARN,console
启动Spark
/opt/spark/sbin/start-all.sh
启动后使用jps命令能够观察到 则代表成功启动伪分布集群
$ jps
12770 Master
12949 Worker
停止Spark
/opt/spark/sbin/stop-all.sh
六.Python
6.1 源代码形式
6.1 python
在华为镜像下载Python-3.6.8.tgz:Index of python-local/3.6.8 (huaweicloud.com)
登录hadoop用户
su hadoop
进行Python包的解压安装
sudo tar -zxf Python-3.6.8.tgz
进行重命名去除版本号信息
mv ./Python-3.6.8/ ./python
进入python目录
cd python
安装依赖
sudo apt-get install -y gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
检查依赖
sudo ./configure --enable-optimizations --prefix=/usr/local/bin/python3.6
此处若缺失gcc将会导致报错,无法产生makefile文件
通过apt工具安装gcc库
sudo apt install gcc
此处若遇见“无法获得锁 /var/lib/dpkg/lock-frontend”报错
可以运行代码 杀死该进程 进程号根据自身报错进行修改
sudo kill 22035
若出现下载失败 无法下载等报错
运行如下代码并检查网络
sudo apt-get update
成功建立Makefile文件后
当存在该文件后 命令行继续输入
sudo make
sudo make install
检测安装情况与Python路径
$ Python3.6 --version
python 3.6.8
安装成功 但是由于此时电脑中存在多Python版本 使用时存在问题
使用如下命令
sudo ln -s -f /usr/local/bin/python3.6/bin/python3.6 /usr/bin/python3.6
sudo ln -s -f /usr/local/bin/python3.6/bin/pip3.6 /usr/bin/pip3.6
将上述安装的python变成我们的默认Python版本
6.2 pip
获取pip-20.2.3.tar.gz文件在/opt路径下
下载链接:Links for pip (tsinghua.edu.cn)
登录hadoop
su hadoop
进入拥有压缩包的目录
cd /opt
进行解压缩
sudo tar -zxvf pip-20.2.3.tar.gz
进入pip文件的目录
cd /opt/pip-20.2.3
进行安装(若未指定python版本 此处可能权限报错)
sudo python setup.py build
sudo python setup.py install
6.3 numpy
安装pip工具后
pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
成功安装numpy库
6.2 默认python
如果无特殊的需求,可以直接使用自带python版本
如ubuntu 20.4.2 存在 python3.10
通过如下几行简单的命令完成Python环境的安装与配置
python3 --version
sudo apt install python3-pip
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
python --version
pip -V
sudo pip install numpy
- 这种方式是最为简便的 但是可能因为Python版本过新
- 造成一些不兼容的问题
6.3 apt方式
更新apt工具
sudo apt update
添加ppa源
sudo apt install software-properties-common
安装Python 3.7
sudo apt install python3.7
完成Python版本安装 添加版本选项 使得你需要的版本保持高优先级
update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2
窗口出现版本选择 随时能够更换Python版本
# update-alternatives --config python
此时在命令行输入python 将不会再出现指向不明
使用Python3.7自带的pip工具进行numpy等第三方库的安装
sudo python3.7 -m pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
七.参考博客
[1] VMware虚拟机安装Ubuntu-CSDN博客
[2] Ubuntu出现:Please remove the installation medium-CSDN博客
[3] ubuntu报错:su认证失败-CSDN博客
[4] VMware虚拟机经常性卡死-博客园
[5] VMware Tools安装-CSDN博客
[6] 设置共享文件夹主机与vmware传输文件-CSDN博客
[7] Ubuntu中vi命令的使用-博客园
[8] linux .bashrc文件误操作后进行恢复-CSDN博客
[9] ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation-CSDN博客
[10] ubuntu下进行HDFS伪分布式环境搭建-CSDN博客
[11] Hadoop安装搭建伪分布式教程-CSDN博客
[12] Ubuntu 用户权限-CSDN博客
[13] Error:localhost:permission denied-CSDN博客
[14] ERROR: Attempting to operate on hdfs namenode as root-CSDN博客
[15] Hadoop伪分布式安装问题总结-CSDN博客
[16] datanode启动失败:Too many failed volumes-华为云
[17] hadoop进程启动不全-CSDN博客
[18] linux修改文件夹下所有文件的权限-CSDN博客
[19] Linux文件 profile、bashrc、bash_profile区别 - 知乎
[20] Spark伪分布式安装 - 博客园
[21] Ubuntu-Error: no acceptable C compiler found in $PATH - 博客园
[22] 解决锁正由进程xx持有-CSDN博客
[23] sudo: make: command not found-CSDN博客
[24] ZipImportError: can’t decompress data-CSDN博客
[25] Ubuntu 20.04安装Python Pip - 知乎
[26] Ubuntu下切换Python版本-CSDN博客
[27] Spark启动时报JAVA_HOME is not set异常-CSDN博客
[28] Falling back to unsupported java.lang.NumberFormatException-CSDN博客
[29] pyspark:TypeError: ‘bytes’ object cannot be interpreted as an integer-CSDN问答
[30] Ubuntu 20.4 安装 python3.6 - 知乎
[31] ubuntu如何完整的卸载pip - 亿速云
[32] ubuntu18.04通过apt安装python3.7.7-CSDN博客
[33] Spark启动:Your hostname resolves to a loopback address-CSDN博客
[34] Unable to load native-hadoop library for your platform-CSDN博客