Spark和Hadoop的安装

Spark和Hadoop的安装
xialichen安装
在Ubuntu中安装Hadoop、Spark和JDK需要一系列步骤。以下是一个详细的指南,帮助你在Ubuntu系统上完成安装。假设你使用的是Ubuntu 20.04或类似版本,并且有sudo权限。
1. 安装JDK(Java Development Kit)
Hadoop和Spark都依赖Java,因此需要先安装JDK。
步骤:
更新包列表
1
sudo apt update
安装OpenJDK(推荐版本为JDK 11)
1
sudo apt install openjdk-11-jdk -y
验证Java安装
1
java -version
输出类似以下内容表示安装成功:
1
openjdk 11.0.15 2022-04-19
设置JAVA_HOME环境变量
找到JDK安装路径:
1
update-java-alternatives -l
输出示例:
1
/usr/lib/jvm/java-11-openjdk-amd64
编辑
~/.bashrc文件
1
nano ~/.bashrc
在文件末尾添加:
1
2export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin应用更改:
1
source ~/.bashrc
验证:
1
echo $JAVA_HOME
2. 安装Hadoop
Hadoop是一个分布式文件系统和计算框架。
步骤:
下载Hadoop
访问Hadoop官网,选择一个稳定版本(例如3.3.6)。用以下命令下载:
1
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
解压文件
1
tar -xzf hadoop-3.3.6.tar.gz sudo mv hadoop-3.3.6 /usr/local/hadoop
配置环境变量
编辑
~/.bashrc
1
nano ~/.bashrc
添加以下内容:
1
2export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin应用更改:
1
source ~/.bashrc
配置Hadoop
编辑
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
1
nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
添加或修改:
1
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
配置核心文件(根据需要调整,例如单机模式):
core-site.xml($HADOOP_HOME/etc/hadoop/):
1
2cd $HADOOP_HOME/etc/hadoop/
nano core-site.xml1
2
3
4
5
6<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>hdfs-site.xml
1
2
3
4
5
6<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
设置SSH(Hadoop需要无密码登录)
1
2sudo apt install openssh-server -y ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost格式化HDFS
1
hdfs namenode -format
启动Hadoop
1
2start-dfs.sh
start-yarn.sh验证安装
1
hdfs dfs -ls / jps
你应该看到类似
NameNode、DataNode、ResourceManager等进程。
3. 安装Spark
Spark是一个快速的大数据处理框架。
步骤:
下载Spark
访问Spark官网,选择一个版本(例如3.5.0,预编译版带Hadoop支持):
1
wget https://downloads.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
解压文件
1
tar -xzf spark-3.5.0-bin-hadoop3.tgz sudo mv spark-3.5.0-bin-hadoop3 /usr/local/spark
配置环境变量
编辑~/.bashrc:
1
nano ~/.bashrc
添加:
1
export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin
应用更改:
1
source ~/.bashrc
验证安装
1
spark-shell
如果成功,会进入Spark交互 shell,显示类似:
Spark context available as 'sc'
(可选)配置Spark与Hadoop集成
如果需要使用HDFS,编辑
$SPARK_HOME/conf/spark-env.sh
1
2cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
nano $SPARK_HOME/conf/spark-env.sh
添加:
1 | export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop |
4. 测试安装
Hadoop测试
1
hdfs dfs -mkdir /test hdfs dfs -put /path/to/local/file /test
Spark测试
在spark-shell中运行:
1
val data = sc.parallelize(1 to 1000) data.count()
注意事项
防火墙:确保端口(如9000、9870)未被防火墙阻挡,或者关闭防火墙:
1
sudo ufw disable
权限问题:如果遇到权限错误,使用sudo chmod -R 755调整目录权限。
依赖冲突:确保Hadoop和Spark的版本兼容(例如Hadoop 3.3.x与Spark 3.5.x兼容)。
操作
前提条件
确保HDFS已启动:
1
2start-dfs.sh
start-yarn.sh检查服务是否正常运行:
1
jps
应看到 NameNode、DataNode、ResourceManager 和 NodeManager 等进程。
如果HDFS未正常运行,请参考之前的建议修复。
任务实现
(1)启动Hadoop,在HDFS中创建用户目录“/user/hadoop”
启动Hadoop(如果尚未启动):
1
start-dfs.sh start-yarn.sh
在HDFS中创建用户目录“/user/hadoop”
1
hdfs dfs -mkdir -p /user/hadoop
- -mkdir:创建目录。
- -p:递归创建父目录(如果需要)。
验证
1
hdfs dfs -ls /user
输出应显示 hadoop 目录。
(2)在Linux本地文件系统“/home/hadoop”下创建test.txt并上传到HDFS
创建本地目录和文件
1
mkdir -p /home/hadoop echo "这是一个测试文件,Hello Hadoop!" > /home/hadoop/test.txt
- mkdir -p:创建目录(如果不存在)。
- echo:向 test.txt 输入内容。
验证本地文件
1
cat /home/hadoop/test.txt
上传到HDFS的“/user/hadoop”目录
1
hdfs dfs -put /home/hadoop/test.txt /user/hadoop/
验证上传
1
hdfs dfs -ls /user/hadoop
输出应显示 test.txt。
(3)将HDFS中的test.txt下载到Linux本地“/home/hadoop/下载”目录
创建本地下载目录
1
mkdir -p /home/hadoop/下载
下载文件
1
hdfs dfs -get /user/hadoop/test.txt /home/hadoop/下载/
验证下载
1
ls /home/hadoop/下载/ cat /home/hadoop/下载/test.txt
(4)将HDFS中“/user/hadoop/test.txt”的内容输出到终端
显示文件内容
1
hdfs dfs -cat /user/hadoop/test.txt
输出应为文件内容,例如:“这是一个测试文件,Hello Hadoop!”。
(5)在HDFS中创建子目录input并复制test.txt
创建子目录“/user/hadoop/input”
1
hdfs dfs -mkdir /user/hadoop/input
复制test.txt到input目录
1
hdfs dfs -cp /user/hadoop/test.txt /user/hadoop/input/
验证
1
hdfs dfs -ls /user/hadoop/input
输出应显示 test.txt。
(6)删除HDFS中的test.txt和input子目录
删除test.txt文件
1
hdfs dfs -rm /user/hadoop/test.txt
删除input目录及其内容
1
hdfs dfs -rm -r /user/hadoop/input
- -rm:删除文件或目录。
- -r:递归删除目录及其内容。
验证删除
1
hdfs dfs -ls /user/hadoop
输出应为空(或仅剩其他无关内容)。
完整命令总结
以下是按顺序执行所有任务的完整脚本:
1 | # 启动Hadoop start-dfs.sh |
注意事项
权限问题:
如果遇到权限错误(如“Permission denied”),可能是当前用户无权操作HDFS目录。可以用
1
sudo
或更改目录权限:
1
hdfs dfs -chmod -R 777 /user/hadoop
或者以HDFS超级用户(通常是 hdfs 或 root)运行命令。
路径确认
- 确保本地路径(如 /home/hadoop)和HDFS路径(如 /user/hadoop)存在且正确。
服务状态
- 如果命令失败,检查HDFS是否运行(jps),并查看日志($HADOOP_HOME/logs/)。