佛山新网站建设案例,网站设计制作多少钱,陕西网站制作,企业运营管理流程图1 环境介绍
本地安装可分为两个部分#xff0c;mac软件环境#xff0c; python开发环境 ps: 安装过程参考chatgpt、csdn文章
1.1 mac软件环境
目标安装的的软件是hive、apache-spark、hadoop#xff0c;但是这三个软件又依赖java(spark依赖#xff09;、ssh#xff08…1 环境介绍
本地安装可分为两个部分mac软件环境 python开发环境 ps: 安装过程参考chatgpt、csdn文章
1.1 mac软件环境
目标安装的的软件是hive、apache-spark、hadoop但是这三个软件又依赖java(spark依赖、ssh从warn日志看到具体作用不明可能是提交计算任务的时候依赖做权限验证、数据库hive依赖postgres 实测问题较少。zsh命令行解释器用于执行指令 homebrew软件包管理器安装卸载软件非常方便。接下来介绍各种软件情况。
1.1.1 环境变量
.zprofile 用来配置mac 用户登录时的环境变量安装完软件后需要进行配置。 文档末尾提供一个参考示例。环境变量配置后才能方便的通过软件指令来进行操作。 同时python运行pyspark的时候也会使用到java的环境变量配置错误会导致pyspark运行失败。 我都是把变量放.zprofile的会比较省事
1.1.2 home-brew
安装过程涉及安装和删除使用homebrew能解决很多不必要的问题。比如启动postgres
1.1.3 java
macos-sonoma 14.6.1自带hotspot 23版本但是不满足spark运行环境要求实测安装java openjdk 1.8 的版本可以使用。
1.1.4 ssh
目测是提交任务时候依赖需要在~/.ssh 下面创建公钥、密钥同时把公钥备份重新命名才能让hadoop或spark使用到。
1.1.5 hive、spark、hadoop
需要解决的是账号密码、端口等配置配置正确才能建立通讯。
1.2 Python 环境
1.2.1 miniforge3
python虚拟环境管理因为公司不允许使用conda所以用这个代替。 这个软件可以解决版本依赖冲突问题同时管理python环境也很方便。 python开发环境和airflow 需要使用相同的python环境。
1.2.2 airflow
相当于python的一个组件调用命令以后就能运行服务。python 代码里也会引用到这个组件。 写好的代码放到 airflow 组件的根目录下的 dags目录下就能被airflow识别。 代码文件复制过去后就会自动刷新调度任务。 可以在airflow上触发调度任务验证执行结果。
1.2.3 python 开发环境
调试过程就能直接读到airflow的变量数据 也可以调用pythonspark功能做调试。但是调试airflow不会把任务提交到airflow上。 所以验证要分两个阶段。
单独测试调度任务的逻辑 如果使用到了python 函数做任务的参数需要自己设置一下传入。对使用xcom_push的还没实践过。测试airflow dag代码逻辑。 验证就是运行有没有报错变量取值是否正确。 任务依赖关系还得在airflow页面上查看。
2 安装步骤
经过反复调试成功可能有些细节忘了。 如有遇到问题可以评论回复。或自行chat-gpt 有些服务启动会导致终端不能再输入指令了command T 创建新终端执行新指令然后 source ~/.zprofile 更新环境变量即可
2.1 mac环境
2.1.1 homebrew
没有安装就用下面指令安装打开终端 /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)” 安装成功以后终端运行brew 有下面提示即可
2.1.2 ssh
cd ~/.sshssh-keygen -t rsa -b 4096 -C “your_emailexample.com” 创建公钥cat id_rsa.pub authorized_keys 复制公钥sudo systemsetup -setremotelogin on 启动ssh服务
2.1.3 安装java 1.8
执行指令 brew install openjdk8export JAVA_HOME$(/usr/libexec/java_home -v 1.8) ~/.zprofile #这种方式不用自己去找java的目录source ~/.zprofilejava -version #如果有打印java信息就安装成功了
2.1.4 安装postgres
brew install postgresql14 #指定版本吧其他版本没试过目录可能是/usr/local/var/postgresql14、/opt/homebrew/opt/postgresql14、/usr/local/opt/postgresql14 验证一下即可也可能没有14确认以后修改环境变量export PATH“/opt/homebrew/opt/postgresql14/bin:$PATH” ~/.zprofilesource ~/.zprofileinitdb /opt/homebrew/var/postgresql14 初始化数据库, 可能没有14我装的都没有14结尾brew services start postgresql14 启动服务brew services list 验证服务是否启动psql postgres 登录数据库创建hive用户信息CREATE DATABASE hive;CREATE USER hiveuser WITH PASSWORD ‘hivepassword’;GRANT ALL PRIVILEGES ON DATABASE hive TO hiveuser;\q 或者control c 退出psql -U hiveuser -d hive -h localhost -p 5432 登录hiveuser账号查看
2.1.5 安装hadoop
brew install hadoopexport HADOOP_HOME/opt/homebrew/opt/hadoop/libexec ~/.zprofileexport PATH H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:PATH ~/.zprofile把下面环境变量写到 ~/.zprofile 文件里
export HADOOP_COMMON_HOME/usr/local/opt/hadoop/libexec 或者 /opt/homebrew/opt/hadoop/libexec 看实际安装路径
export HADOOP_HOME$HADOOP_COMMON_HOME
export HADOOP_HDFS_HOME$HADOOP_COMMON_HOME
export HADOOP_MAPRED_HOME$HADOOP_COMMON_HOME
export HADOOP_YARN_HOME$HADOOP_COMMON_HOME
export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop
# 指定用当前用户启动hdfs 就不用单独创建hdfs了
export HADOOP_NAMENODE_USER{mac登录用户的名字}
export HADOOP_DATANODE_USER{mac登录用户的名字}source ~/.zprofilehadoop version 查看安装情况start-dfs.sh 启动hadoop组件start-yarn.shjps 查看是否启动成功应该有ResourceManagerHDFS Web 界面http://localhost:9870YARN Web 界面http://localhost:8088cd $HADOOP_HOME/etc/hadoop 进入到配置页面vim core-site.xml 我是这样配置的 configuration
propertynamefs.defaultFS/namevaluehdfs://localhost:9000/value/property
/configurationvim hdfs-site.xml
configurationpropertynamedfs.namenode.name.dir/namevalue/Users/自己的用户名/hdfs/hadoop/tmp/dfs/name/value
/property
propertynamedfs.datanode.data.dir/namevalue/Users/自己的用户名/hdfs/hadoop/tmp/dfs/data/value
/property
propertynamedfs.namenode.http-address/namevaluelocalhost:9101/value
/property
propertynamedfs.datanode.http.address/namevaluelocalhost:9102/value
/property/configurationhdfs namenode 终端启动hdfs datanode
2.1.6 安装hive
brew install apache-hiveexport HIVE_HOME/opt/homebrew/opt/apache-hive/libexec ~/.zprofileexport PATH H I V E H O M E / b i n : HIVE_HOME/bin: HIVEHOME/bin:PATH ~/.zprofilesource ~/.zprofile下载postgres驱动 https://jdbc.postgresql.org/download/ 。我使用的是42.7.4-java8 版本。 拷贝到$HIVE_HOME/lib目录修改 $HIVE_HOME/conf/hive-site.xml 配置 使用postgres。 拷贝出来到文本编辑器里改方便。根据name来改
propertynamejavax.jdo.option.ConnectionURL/namevaluejdbc:postgresql://localhost:5432/hive/valuedescriptionJDBC connect string for a JDBC metastore.To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.For example, jdbc:postgresql://myhost/db?ssltrue for postgres database./description/propertypropertynamejavax.jdo.option.ConnectionDriverName/namevalueorg.postgresql.Driver/valuedescriptionDriver class name for a JDBC metastore/description/property
propertynamejavax.jdo.option.ConnectionUserName/namevaluehiveuser/valuedescriptionUsername to use against metastore database/description/property
propertynamejavax.jdo.option.ConnectionPassword/namevaluehivepassword/valuedescriptionThe password for the database user./description
/property
propertynamehive.metastore.uris/namevaluethrift://localhost:9083/valuedescriptionThrift URI for the remote metastore. Used by metastore client to connect to remote metastore./description/propertyschematool -dbType postgres -initSchema 初始化数据库hive --service metastore 启动metastore服务hive --version 查看安装成功hive 启动 如果hadoop的 namenode、datanode没启动会报错。show databases; --如果正常就可以一顿操作了PS hive的xml配置可能有问题需要手动删掉特殊字符3215行
2.1.7 安装spark
brew install apache-sparkexport SPARK_HOME/opt/homebrew/opt/apache-spark/libexec ~/.zprofileexport PATH S P A R K H O M E / b i n : SPARK_HOME/bin: SPARKHOME/bin:PATH ~/.zprofilesource ~/.zprofilecp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf/ 把hive配置复制到spark/usr/local/opt/apache-spark/libexec/sbin/stop-all.sh 停止spark/usr/local/opt/apache-spark/libexec/sbin/start-all.sh 启动sparkspark-shell --version 验证安装spark.sql(“SHOW TABLES”).show() 执行看看是否能查到hive表
2.1.8 启动服务查看
终端输入jps 查看启动的服务有哪些也可通过网页查看spark、 hadoop的情况
2.2 python环境安装
这个相对简单也独立
2.2.1 miniforge3
https://github.com/conda-forge/miniforge 可以自己下载安装指定目录 我使用的是 ~/miniforge 好找brew install miniforge 这个命令直接安装之后复制/usr/local/miniforge3 到自己想要的目录。echo ‘export PATH“/usr/local/miniforge3/bin:$PATH”’ ~/.zprofile 这个命令把miniforge如果修改了目录自己改下路径source ~/.zprofile 更新环境变量conda --version 查看是否安装成功conda init zsh 初始化conda环境 这个命令会把初始化代码放到~/.bashrc 或者 ~/.zshrc 里复制出来到 ~/.zprofileconda create -n data_dev python3.8 创建一个3.8的环境 环境名字data_dev可以自己改conda activate data_dev 激活环境在这个环境里安装python组件
2.2.2 airflow 安装
conda install apache-airflow1.10.12 安装指定版本airflowairflow initdb db初始化1.10x版本airflow scheduler 启动调度airflow webserver --port 8081 启动页面http://localhost:8081 访问页面安装目录在 xxx /miniforge3/envs/data_dev/lib/python3.8/site-packages/airflow data_dev跟conda创建的环境名一样写完的脚本放到${AIRFLOW_HOME}/dags/下。这里我配置的AIRFLOW_HOME上一步的安装路径ps 使用3.8 可以用conda 安装1.10.12的airflow可能遇到itsdangerous版本问题降级 conda install itsdangerous1.1.0即可ps airflow默认使用sqlite3的数据存储方式似乎不需要安装这个数据库。
2.2.3 python环境
指定xxx /miniforge3/envs/data_dev/ 目录下的python环境作为pycharm的python解释器再安装一个pyspark 就行可以直接运行python代码了
3 附录
3.1 启动服务指令
# 可以开启多个终端执行任务
#启动ssh hadoop依赖
# sudo launchctl stop com.openssh.sshd
# sudo launchctl start com.openssh.sshd
# 关闭ssh服务
sudo systemsetup -setremotelogin off
# 开启ssh服务
sudo systemsetup -setremotelogin on#停止postgres
brew services stop postgresql
#启用
brew services start postgresql # hadoop 集群服务
/usr/local/opt/hadoop/libexec/sbin/stop-dfs.sh
/usr/local/opt/hadoop/libexec/sbin/stop-yarn.sh
/usr/local/opt/hadoop/libexec/sbin/start-dfs.sh
/usr/local/opt/hadoop/libexec/sbin/start-yarn.sh#启动hdfs
hdfs namenode
hdfs datanode
#启动hive元数据管理
hive --service metastore
# 启动spark
/usr/local/opt/apache-spark/libexec/sbin/stop-all.sh
/usr/local/opt/apache-spark/libexec/sbin/start-all.sh#启动airflow在 conda环境执行 data_dev
conda activate data_dev
pkill -f airflow
airflow scheduler
airflow web --port 8081 #jps查看服务 运行的hadoop、hive
jps
#查看postgres服务
brew services list3.2 环境变量配置
export JAVA_HOME$(/usr/libexec/java_home -v 1.8)
export HIVE_HOME/Users/{mac登录用户的名字}/apache-hive-3.1.2-bin
export PATH$HIVE_HOME/bin:$PATH
export JAVA_OPTS-Djava.io.tmpdir/Users/{mac登录用户的名字}/logs -Duser.name{mac登录用户的名字}
export SPARK_HOME/usr/local/opt/apache-spark/libexec
export PATH$PATH:$SPARK_HOME/bin
export HADOOP_COMMON_HOME/usr/local/opt/hadoop/libexec
export HADOOP_HOME$HADOOP_COMMON_HOME
export HADOOP_HDFS_HOME$HADOOP_COMMON_HOME
export HADOOP_MAPRED_HOME$HADOOP_COMMON_HOME
export HADOOP_YARN_HOME$HADOOP_COMMON_HOME
export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop
# 指定用当前用户启动hdfs 就不用单独创建hdfs了
export HADOOP_NAMENODE_USER{mac登录用户的名字}
export HADOOP_DATANODE_USER{mac登录用户的名字}
#export SPARK_SUBMIT_OPTS-Djava.security.managerallow # conda initialize
# !! Contents within this block are managed by conda init !!
__conda_setup$(/Users/{mac登录用户的名字}/miniforge3/bin/conda shell.bash hook 2 /dev/null)
if [ $? -eq 0 ]; theneval $__conda_setup
elseif [ -f /Users/{mac登录用户的名字}/miniforge3/etc/profile.d/conda.sh ]; then. /Users/yuwang.lin/miniforge3/etc/profile.d/conda.shelseexport PATH/Users/{mac登录用户的名字}/miniforge3/bin:$PATHfi
fi
unset __conda_setup
# conda initialize
#这个home因为会放cfg文件所以不能配置为airflow所在目录
export AIRFLOW_DIR/Users/{mac登录用户的名字}/miniforge3/envs/data_dev/lib/python3.8/site-packages/airflow
export AIRFLOW_HOME/Users/{mac登录用户的名字}/airflow
export POSTGRESQL_HOME/usr/local/var/postgresql14
export PATH$POSTGRESQL_HOME/bin:$PATH
export PGDATA/usr/local/pgsql/data
~
~ 4 参考文献
hdfsssh 启动