CentOS7安装pyspark(python3)-第二篇

本文详细指导了在CentOS 7的最小化系统中,通过下载并安装Java 1.8、Hadoop 3.0.3、Python 3.7.2和Spark 2.4.0,设置静态IP、网络配置,以及配置Hadoop环境,最后完成pyspark的安装与启动过程。

安装前说明

本文档是记录在CentOS7的最小化系统下安装pyspark步骤的文档说明。CentOS运行在vmware虚拟机中。

版本和下载链接:

CentOS版本:CentOS-7-x86_64-DVD-1804.iso

Java版本:1.8.0,https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz

Hadoop版本:3.0.3,http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz

Python版本:3.7.2,https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

Spark版本:2.4.0,https://www.apache.org/dyn/closer.lua/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz

以上版本都是截至2019年1月份最新版本。

Hadoop、Python、Spark下载后统一保存在/root/download下,安装路径统一在/usr/local下。


CentOS7配置

CentOS是安装的最小系统版本,vmware中安装CentOS的步骤很简单,网络上一大把的教程,在此不做说明。

安装完成后,需要设置开机自动启动网络连接、设置静止的IP地址和安装wget。

开机启动网络连接:

编辑网络配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-eno33

修改配置文件onboot选项,把默认的no修改为yes

onboot=yes

保存退出,重启网络服务:

service network restart

 

固定IP设置:
编辑网络配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改或者添加一下内容:

BOOTPROTO=static
IPADDR=192.168.29.129
NETMASK=255.255.255.0
GATEWAY=192.168.29.2
DNS1=114.114.114.114
DNS2=8.8.8.8

保存并退出,然后执行service network restart重新加载网络设置。

 

安装wget

yum -y install wget

安装JAVA

解压到/usr/local/java目录下:

tar zxvf /root/download/jdk-8u181-linux-x64.tar.gz -C /usr/local/java/

编辑/etc/profile添加以下内容:

JAVA_HOME=/usr/local/java/jdk1.8.0_181
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

立即生效:

source /etc/profile

检查Java是否安装成功:

java -version

如果出现下图所示,表示安装成功:

java安装成功提示

 


安装Hadoop

解压到/usr/local/hadoop/目录下:

tar zxvf /root/download/hadoop-3.0.3.tar.gz -C /usr/local/hadoop/

编辑/etc/profile,添加以下内容:

export HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.3 
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

编辑/usr/local/hadoop/hadoop-3.0.3/etc/hadoop/hadoop-env.sh

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
# export JAVA_HOME=

修改为:

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
export JAVA_HOME=/usr/local/java/jdk1.8.0_181

创建data目录:

mkdir /usr/local/hadoop/hadoop-3.0.3/data

编辑/usr/local/hadoop/hadoop-3.0.3/etc/hadoop/core-site.xml:

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.29.129:9000</value>
  </property>
<!-- 指定hadoop存储数据的目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/hadoop-3.0.3/data</value>
  </property>
</configuration>

编辑/usr/local/hadoop/hadoop-3.0.3/etc/hadoop/hdfs-site.xml:

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property> 
    <name>dfs.http.address</name> 
    <value>0.0.0.0:50070</value> 
  </property>
</configuration>

编辑/usr/local/hadoop/hadoop-3.0.3/etc/hadoop/mapred-site.xml:

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

编辑/usr/local/hadoop/hadoop-3.0.3/etc/hadoop/yarn-site.xml

<configuration>
  <!-- Site specific YARN configuration properties -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>192.168.29.129</value>
  </property>
  <!-- 分别指定MapReduce的方式 -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

初始化Hadoop HDFS文件系统:

hdfs namenode -format

创建新用户hadoop3:

useradd hadoop3
passwd hadoop3

修改Hadoop的安装文件的所属用户和所属组:

chown -R hadoop3:123 /usr/local/hadoop/

切换到hadoop3用户:

su - hadoop3

设置ssh免密码登录:

ssh-keygen -t rsa

执行该命令后再接着三个回车 然后将公钥拷贝给自己:

ssh-copy-id localhost

启动HDFS:

./usr/local/hadoop/hadoop-3.0.3/sbin/start-dfs.sh

启动YARN:

./usr/local/hadoop/hadoop-3.0.3/sbin/start-yarn.sh

jps查看:

jps

关闭CentOS 7的防火墙服务firewalld:

systemctl stop firewalld

设置防火墙服务开机不启动:

systemctl disable firewalld

打开Hadoop HDFS的管理页面,使用浏览器访问hdfs管理界面:

http://192.168.29.129:50070

hdfs管理界面

 

打开Hadoop YARN的管理页面,使用浏览器访问yarn管理界面:

http://192.168.29.129:8088

yarn管理界面

 


安装Python3

安装必备软件源:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel

解压目录:

tar zxvf /root/download/Python-3.7.2.tgz -C /root/download/

进入解压后目录:

cd Python-3.7.2

手动编译:

./configure prefix=/usr/local/python3
make && make install

添加python3的软链接 :

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3.7 

添加 pip3 的软链接 :

ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3.7

测试是否安装成功了 :

python -V

编辑/usr/bin/yum:

#! /usr/bin/python    

修改为 :

#! /usr/bin/python2

编辑/usr/libexec/urlgrabber-ext-down:

#! /usr/bin/python    

修改为 :

#! /usr/bin/python2

安装pyspark:

pip install pyspark

编辑/etc/profile,添加:

export PYSPARK_PYTHON=/usr/local/python/bin/python3.7


启动Spark:

cd /usr/local/python3/bin
./spark

当我们看到这个界面,说明已经安装成功了。

一、进行换源处理,这里选的是阿里的yum源 1:在root用户下输入 cd /etc/yum.repos.d 命令,输入ls 并展开 2:将CentOS-Base.repo 进行备份,在root用户下输入命令 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3:第三步完成后输入命令 yum clean all 4:第四步完成后输入命令 yum makecache 直至数据加载完成 5:第五步完成后输入命令 yum update -y 更新安装包 直至完成 6:最后在root用户下输入命令 yum install wget 安装wget软件,安装成功如图所示 二、在基于Red Hat的发行版中,可以使用DNF或YUM工具安装Python: yum install python3 安装完成后,执行以下命令检查安装结果: python3 --version 环境配置 vi ~/.bashrc export SPARK_HOME=/usr/local/spark export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9.7-src.zip:$PYTHONPATH export PATH=$SPARK_HOME/bin:$PATH source ~/.bashrc 三、打开Pyspark cd /usr/local/spark ./bin/pyspark 现在,你可以开始编写你的第一个PySpark程序。可以使用以下代码创建一个简单的Spark应用程序,计算一个数据集的平均值。 from pyspark.sql import SparkSession # 创建Spark会话 spark = SparkSession.builder \ .appName("MyFirstApp") \ .getOrCreate() # 创建数据 data = [(1, &#39;Alice&#39;), (2, &#39;Bob&#39;), (3, &#39;Cathy&#39;)] columns = ["id", "name"] # 创建DataFrame df = spark.createDataFrame(data, columns) # 显示DataFrame内容 df.show() # 计算平均值 average_id = df.groupBy().avg("id").first()[0] print(f"Average ID: {average_id}") # 结束Spark会话 spark.stop() 四、jupytor Install pip: yum install epel-release yum install python3-pip Verify pip Installation: pip3 --version 1. 安装编译工具和依赖库 yum groupinstall "Development Tools" yum install -y python3-devel libffi-devel openssl-devel pkgconfig 2. 安装 argon2 依赖库 yum install -y libargon2-devel 3更新 pip 和 setuptools pip3 install --upgrade pip setuptools wheel 4. 单独安装 argon2-cffi-bindings pip3 install argon2-cffi-bindings 1. 安装Jupyter(Linux终端) 在Linux终端中运行以下命令: pip3 install jupyter 2. 配置Spark环境变量(Linux终端) 在Linux终端中编辑环境变量文件: vi ~/.bashrc export SPARK_HOME=/usr/local/spark export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9.7-src.zip:$PYTHONPATH export PATH=$SPARK_HOME/bin:$PATH source ~/.bashrc 3. 安装依赖库(Linux终端) 在Linux终端中安装Python依赖: pip3 install findspark pyspark 2、生成jupyter配置文件 #root用户: jupyter notebook --generate-config --allow-root 3、打开ipython,生成密码 ipython from notebook.auth import passwd passwd() – 输入密码并按回车确认 输入密码后,会生成秘钥,稍后用到,秘钥:&#39;argon2:$argon2id$v=19$m=10240,t=10,p=8$mPEEyotF56sm8V1Iv6/6Ng$xM7dYChXNFxeVBG9LaHUcTmj5pLRSOiFB3hfqSPe/Sk&#39; 4、修改配置文件 vi /root/.jupyter/jupyter_notebook_config.py c.NotebookApp.ip = &#39;*&#39; #c.NotebookApp.notebook_dir = &#39;/root/jupyder_dir&#39; c.NotebookApp.open_browser = False c.NotebookApp.password = &#39;argon2:$argon2id$v=19$m=10240,t=10,p=8$mPEEyotF56sm8V1Iv6/6Ng$xM7dYChXNFxeVBG9LaHUcTmj5pLRSOiFB3hfqSPe/Sk&#39; c.NotebookApp.port = 8888 c.NotebookApp.allow_remote_access = True c.NotebookApp.allow_root = True 5、启动jupyter – root用户 jupyter notebook --allow-root
最新发布
06-05
<think>嗯,用户这次的问题很系统,是在RedHat系服务器上搭建PySpark开发环境的需求。从ta引用的资料看,已经接触过YUM源配置、Python环境管理和Ansible自动化部署,但需要更落地的操作指南。用户可能是个数据工程师或运维开发,正在搭建集群或单机分析环境。ta特别强调“最佳实践”,说明需要生产环境可用的方案,尤其是安全配置部分。引用中出现的EPEL和Ansible角色说明用户有一定基础,可以接受技术细节。核心需求拆解为五个技术模块:1.YUM源配置:优先选择阿里云镜像,考虑RHEL和CentOS的兼容性2.Python3安装:需明确区分系统Python2和自定义Python3的共存问题3.Spark部署:要解决官方包下载、环境变量配置、Hadoop库警告消除4.PySpark验证:需要简单有效的测试脚本5.Jupyter安全:重点是密码哈希生成和服务自启动配置特别注意用户引用3提到的“makeinstall默认路径”问题,在Spark部署时要避免/usr/local路径权限问题。引用4的Ansible多OS支持思路也可借鉴,但用户没提自动化需求就暂不展开。安全方面要重点考虑:Jupyter必须配置密码而非token,且需绑定内网IP。用户引用2提到的EPEL会在配置JDK时用到(比如支持OpenJDK11)。最后的防火墙建议虽然基础,但实际生产中常被忽略。</think> 以下是在CentOS/Red Hat系统上搭建PySpark开发环境的完整指南,结合最佳实践和阿里云镜像优化: --- ### **1. 配置阿里YUM源** ```bash # 备份原YUM配置 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 获取阿里镜像源 (CentOS 7示例) sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 清理并重建缓存 sudo yum clean all && sudo yum makecache ``` > **注**:其他版本镜像源可在[阿里镜像站](https://developer.aliyun.com/mirror/)获取 --- ### **2. 安装Python 3** ```bash # 启用EPEL源 (额外软件包支持) sudo yum install -y epel-release # 安装Python 3.9及开发依赖 sudo yum install -y python39 python39-devel # 设置默认python3 sudo alternatives --set python /usr/bin/python3.9 ``` 验证安装:`python --version` 应显示 Python 3.9.x --- ### **3. Spark环境部署** #### **3.1 安装依赖** ```bash sudo yum install -y java-11-openjdk-devel wget echo "export JAVA_HOME=/usr/lib/jvm/java-11" >> ~/.bashrc ``` #### **3.2 下载Spark** ```bash wget https://archive.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz tar -xzf spark-3.1.2-bin-hadoop3.2.tgz sudo mv spark-3.1.2-bin-hadoop3.2 /opt/spark ``` #### **3.3 配置环境变量** ```bash echo &#39;export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin export PYSPARK_PYTHON=python3.9 export PYSPARK_DRIVER_PYTHON=jupyter export PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip=0.0.0.0"&#39; >> ~/.bashrc source ~/.bashrc ``` --- ### **4. 运行首个PySpark程序** ```python # test_pyspark.py from pyspark.sql import SparkSession spark = SparkSession.builder.appName("FirstApp").getOrCreate() data = [("John", 28), ("Alice", 33)] df = spark.createDataFrame(data, ["Name","Age"]) df.show() spark.stop() ``` 执行:`pyspark test_pyspark.py` --- ### **5. Jupyter Notebook安装与安全** #### **5.1 安装与配置** ```bash pip3.9 install jupyterlab jupyter notebook --generate-config echo "c.NotebookApp.password = &#39;sha1:your_hashed_password&#39;" >> ~/.jupyter/jupyter_notebook_config.py ``` > **密码生成**:在Python中执行: > ```python > from notebook.auth import passwd > passwd() # 交互式生成哈希密码 > ``` #### **5.2 安全增强** ```bash # 配置防火墙 sudo firewall-cmd --permanent --add-port=8888/tcp sudo firewall-cmd --reload # 使用HTTPS (需域名证书) echo "c.NotebookApp.certfile = &#39;/path/to/cert.pem&#39;" >> ~/.jupyter/jupyter_notebook_config.py ``` #### **5.3 启动服务** ```bash nohup pyspark > /dev/null 2>&1 & # 后台启动带Jupyter的PySpark ``` --- ### **关键说明** 1. **Spark版本选择**:Spark 3.x+ 对Python 3支持更好,兼容Pandas API[^1] 2. **资源限制**:在`spark-defaults.conf`中配置内存参数避免OOM ```properties spark.driver.memory 4g spark.executor.memory 8g ``` 3. **虚拟环境**:建议使用`python -m venv`创建隔离环境 4. **日志管理**:Spark日志默认在`$SPARK_HOME/logs`,可通过`log4j.properties`调整 --- **操作验证**: ```bash # 检查环境完整性 echo $JAVA_HOME # 应显示Java11路径 which pyspark # 应指向/opt/spark/bin/pyspark jupyter --version # 应显示安装版本 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值