环境准备
1. 系统要求
当前环境和版本:
ubuntu24
hadoop-3.2.4
2. 安装必要的软件包:jdk和系统依赖
jdk可以从oracle官网下载,也可以使用linux安装openjdk,
官网地址:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html
使用linux:
Ubuntu/Debian:
sudo apt update
sudo apt install ssh pdsh openjdk-8-jdk -yCentOS/RHEL:
sudo yum update
sudo yum install ssh pdsh java-1.8.0-openjdk-devel -y安装步骤
1. 创建Hadoop用户(非必须)
sudo useradd -m hadoop # 添加hadoop账户
sudo passwd hadoop
sudo usermod -aG sudo hadoop # 将用户 hadoop 添加到 sudo 组中,使其拥有管理员权限
su - hadoop2. 配置SSH免密登录
Hadoop通过SSH来启动和停止集群中的各个守护进程,所以必须配置ssh免密登录,如果ssh登录需要鉴权,则会导致hadoop启动失败。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 测试SSH连接shell: 如果不需要输入密码则配置成功
ssh localhost3. 下载并安装Hadoop
cd ~/apps/bigdata
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.2.4/hadoop-3.2.4.tar.gz
tar -xzf hadoop-3.2.4.tar.gz4. 配置环境变量
编辑 ~/.bashrc 文件:
export HADOOP_HOME=/home/phoenix/apps/bigdata/hadoop-3.2.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=/home/phoenix/apps/jdk1.8.0_202
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"使环境变量生效:
source ~/.bashrc5. 配置Hadoop
配置 core-site.xml
这一步配置hdfs服务的通信地址和hadoop临时文件保存目录。
编辑 $HADOOP_HOME/etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/phoenix/apps/bigdata/hadoop_data/hadoop_tmp</value>
</property>
<!-- hive:用户代理配置 -->
<property>
<name>hadoop.proxyuser.hive.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hive.groups</name>
<value>*</value>
</property>
<!-- hive:或者针对特定用户 phoenix -->
<property>
<name>hadoop.proxyuser.phoenix.hosts</name>
<value>*</value>
<description>
Allow phoenix user to impersonate from any host
</description>
</property>
<property>
<name>hadoop.proxyuser.phoenix.groups</name>
<value>*</value>
<description>
Allow phoenix user to impersonate any group
</description>
</property>
</configuration>配置 hdfs-site.xml
这一步配置hdfs的副本数和namenode和datanode节点的数据保存目录。
编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/phoenix/apps/bigdata/hadoop_data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/phoenix/apps/bigdata/hadoop_data/datanode</value>
</property>
</configuration>配置 mapred-site.xml
配置mapreduce任务的执行引擎为yarn。
编辑 $HADOOP_HOME/etc/hadoop/mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>配置 yarn-site.xml
编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>配置 hadoop-env.sh
配置一下环境变量:jdk和hadoop
编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh:
export JAVA_HOME=/home/phoenix/apps/jdk1.8.0_202
export HADOOP_HOME=/home/phoenix/apps/bigdata/hadoop-3.2.4
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs6. 创建必要的目录
mkdir -p /home/phoenix/apps/bigdata/hadoop_data/hadoop_tmp
mkdir -p /home/phoenix/apps/bigdata/hadoop_data/namenode
mkdir -p /home/phoenix/apps/bigdata/hadoop_data/datanode7. 格式化HDFS
hdfs namenode -format8. 启动Hadoop服务
# 启动HDFS
start-dfs.sh
# 启动YARN
start-yarn.sh9. 验证安装
# 检查Java进程
jps
# 应该看到类似以下进程:
# NameNode
# DataNode
# ResourceManager
# NodeManager
# SecondaryNameNode
# 访问Web界面
# HDFS: http://localhost:9870
# YARN: http://localhost:8088
测试Hadoop
1. 创建HDFS目录
bash
hdfs dfs -mkdir /input
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop2. 上传测试文件
bash
# 创建本地测试文件
echo "Hello Hadoop" > test.txt
echo "This is a test" >> test.txt
# 上传到HDFS
hdfs dfs -put test.txt /input/3. 运行MapReduce示例
bash
# 运行wordcount示例
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.0.jar wordcount /input/test.txt /output
# 查看结果
hdfs dfs -cat /output/*管理命令
启动服务
start-dfs.sh
start-yarn.sh停止服务
stop-yarn.sh
stop-dfs.sh单独启动/停止服务
# HDFS服务
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
# YARN服务
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager自启动配置:
cd /etc/systemd/system
vim hadoop.service
[Unit]
Description=start hadoop
After=networkd-dispatcher.service
[Service]
ExecStart=sudo su phoenix -c "/home/phoenix/apps/bigdata/hadoop-3.2.4/sbin/stop-all.sh && /home/phoenix/apps/bigdata/hadoop-3.2.4/sbin/start-all.sh && /home/phoenix/apps/bigdata/hadoop-3.2.4/sbin/mr-jobhistory-daemon.sh start historyserver"
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target# 开机自启动
sudo systemctl enable hadoop.service
#启动服务
systemctl start hadoop.service故障排除
常见问题
Java版本问题
确保使用Java 8或11
检查JAVA_HOME环境变量
权限问题
确保hadoop用户有读写权限
检查目录权限
端口冲突
检查9870、8088等端口是否被占用
SSH连接问题
确保可以免密登录localhost
检查.ssh目录权限
日志文件位置
# HDFS日志
$HADOOP_HOME/logs/hadoop-hadoop-namenode-*.log
$HADOOP_HOME/logs/hadoop-hadoop-datanode-*.log
# YARN日志
$HADOOP_HOME/logs/yarn-hadoop-resourcemanager-*.log
$HADOOP_HOME/logs/yarn-hadoop-nodemanager-*.log这样就完成了Hadoop 3.2.4的伪分布式安装。你可以通过Web界面和命令行工具来管理和使用Hadoop集群。
评论