搭建大数据开发环境【AutoDL容器】

租用AutoDL容器

  • 注意:结束实验时记得将数据库数据转移存储

使用Docker实现本地IDEA连接AutoDL

  • @后为ssh服务器地址
  • 用户名为@前的
  • 端口号
  • ssh密码为用户密码

安装基础工具

  • 更新apt
apt-get update
  • 更新vim/gedit
apt-get install vim
  • 安装sudo
apt-get install sudo 
  • 安装
sudo apt-get install coreutils

创建新用户

  • 不能使用root用户启动Hadoop集群
  • 创建hadoop用户
useradd -m hadoop -s /bin/bash
  • 设置用户密码
sudo passwd hadoop
  • 增加管理员权限
adduser hadoop sudo

安装ssh、配置ssh无密码登录

  • Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server
sudo apt-get install openssh-server

使用命令登陆本机

ssh localhost
  • 如果有提示,按照提示输入yes回车
  • 退出刚才的 ssh,回到原先的终端窗口,利用 ssh-keygen 生成密钥,并将密钥加入到授权中
exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权
  • 此时再用 ssh localhost 命令,无需输入密码就可以直接登陆

安装JDK

压缩包安装

这里安装的是1.8完整版(jdk1.8.0_381)

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads  #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下
  • 配置环境变量
cd ~
vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_351	# 自己安装java的位置
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source ~/.bashrc
  • 查看是否生效
java -version

安装Hadoop

Hadoop常见基本操作

sudo tar -zxf ~/下载/hadoop-3.3.4.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.3.4/ ./hadoop            # 将文件夹名改为hadoop
# 修改文件权限
sudo chown -R hadoop ./hadoop    
sudo chmod -R 777 ./hadoop		# 常用这个命令改变权限   
  • 检查是否可用
cd /usr/local/hadoop
./bin/hadoop version

hadoop伪装分布式

  • Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中
  • 伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml
  • 修改配置文件 core-site.xml
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
  • 修改配置文件 hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>
  • 配置hadoop环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH:$HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
  • 在hadoop-env.sh中重新声明JAVA_HOME
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH:$HOME/bin
  • 配置完成后,执行 NameNode 的格式化
cd /usr/local/hadoop
./bin/hdfs namenode -format
  • 开启 NameNode 和 DataNode 守护进程
cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

安装MySQL

MySQL常见基本操作


安装Spark

Spark常见基本操作

sudo tar -zxf ~/下载/spark-1.6.2-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-1.6.2-bin-without-hadoop/ ./spark
sudo chown -R hadoop:hadoop ./spark          # 此处的 hadoop 为你的用户名
  • 修改~/.bashrc中的配置文件
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
  • 修改Spark的配置文件spark-env.sh
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
# 编辑spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
  • 通过运行Spark自带的示例,验证Spark是否安装成功
cd /usr/local/spark
bin/run-example SparkPi
# 可以通过 grep 命令进行过滤
bin/run-example SparkPi 2>&1 | grep "Pi is"

简单项目开发–物流管理系统

前端设计

后端开发

数据处理

数据清洗
数据来源网上,主要利用爬虫方式进行处理数据,对于这些数据则可能发生,字段丢失,或者重复爬取等情况。需要针对于数据进行处理。
本次项目中选用spark进行数据简单处理
准备工作:

  • 启动hadoop中分布式文件系统
start-dfs.sh  
  • 启动spark-shell
spark-shell
  • 上传初始化源文件

Hadoop的基本指令

hadoop fs -mkdir -p /douban/input
hadoop fs -put /soft/movie_info.csv /douban/input/
hadoop fs -put /soft/movie_rating.csv /douban/input/
  • 查看文件

  • 启动spark-shell进行数据处理
scala> val movieInfo=sc.textFile("hdfs://192.168.91.199:9000/douban/input/movie_info.csv")
scala> val movieRating=sc.textFile("hdfs://192.168.91.199:9000/douban/input/movie_rating.csv")
  • 数据的去重工作:
scala> val rdd1 = movieInfo.distinct()
scala> val rdd2 = movieRating.distinct()
  • 保存到文件中:
scala> rdd1.repartition(1).saveAsTextFile("hdfs://192.168.91.199:9000/douban/output/out1")

scala> rdd2.repartition(1).saveAsTextFile("hdfs://192.168.91.199:9000/douban/output/out2")
  • 数据清洗:去除无效数据------每个数据文件中标头
scala> val rdd3 = movieInfo.filter(!_.contains("电影"))
rdd3: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[23] at filter at <console>:26
scala> val rdd4 = movieRating.filter(!_.contains("电影"))
rdd4: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[24] at filter at <console>:26
  • 保存本地文件
scala> rdd3.repartition(1).saveAsTextFile("hdfs://192.168.91.199:9000/douban/output/out3")
scala> rdd4.repartition(1).saveAsTextFile("hdfs://192.168.91.199:9000/douban/output/out4")

虚拟机常见错误

  • 基础指令无法使用
# 暂时恢复正常
export PATH=/usr/bin:/usr/sbin:/bin:/sbin

补充操作

本地Python通过paramiko对云服务器操作

  • 列出hadoop上的文件
import paramiko

# 云服务器的SSH连接信息
host = 'connect.bjb1.seetacloud.com'
port = 40180
username = 'hadoop'
password = '123'

# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接到云服务器
client.connect(host, port, username, password)

# 执行HDFS命令(例如,列出根目录)
hdfs_command = 'hdfs dfs -ls /'
stdin, stdout, stderr = client.exec_command(hdfs_command)

# 输出命令执行结果
print(stdout.read().decode())

# 关闭SSH连接
client.close()
  • 文件传输
import paramiko
from scp import SCPClient

# 云服务器的SSH连接信息
host = 'your_server_ip'
port = 22
username = 'your_ssh_username'
password = 'your_ssh_password'

# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接到云服务器
client.connect(host, port, username, password)

# 通过SCP传输本地文件到云服务器上的HDFS
local_file_path = 'path/to/local/file.txt'
remote_hdfs_path = '/path/in/hdfs/'

# 使用SCPClient传输文件
with SCPClient(client.get_transport()) as scp:
    scp.put(local_file_path, remote_hdfs_path)

# 关闭SSH连接
client.close()
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值