Hadoop3.3.4伪分布式环境搭建


前言

hadoop学习——伪分布式环境——普通用户搭建


一、准备

1. 下载Hadoop

2. 配置环境变量

vi ~/.bash_profile

# 增加如下配置
export HADOOP_HOME=/home/install/hadoop-3.3.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# 使配置生效
source ~/.bash_profile

3. 配置免密

二、Hadoop配置

配置的目录是$HADOOP_HOME/etc/hadop

1. hadoop-env.sh

修改JAVA_HOME,设置为JDK所在的位置

# Linux命令行输出 JDK 位置
echo $JAVA_HOME

2. hdfs-site.xml

<!--指定数据冗余份数-->
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.http.address</name>
    <value>hadoop01:50070</value>
</property>

3. core-site.xml

 <!--hadoop01是机器名  hostname-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop01:9000</value>
</property>
<!-- hadoop临时目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/install/data/hadoop/HADOOP_TMP_DIR</value>
    <description>Abase for other temporary directories.</description>
</property>
<!--所有用户可访问-->
<property>
    <name>hadoop.proxyuser.hduser.groups</name>
    <value>*</value>
</property>
<!--设置buffer size-->
<property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
</property>
<!--任何IP可访问-->
<property>
    <name>hadoop.proxyuser.hduser.hosts</name>
    <value>*</value>
</property>

4. mapred-site.xml

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.job.counters.max</name>
    <value>1200000</value>
</property>
<property>
    <name>mapreduce.map.memory.mb</name>
    <value>4096</value>
</property>
<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>8192</value>
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx3072m</value>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx6144m</value>
</property>

5. yarn-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop01</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>4</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>20480</value>
</property>
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>1024</value>
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>20480</value>
</property>

三、格式化

hadoop namenode -format

四、启动

# 懒一点的方式
start-all.sh

五、访问web页面

http://localhost:50070
如果没有配置,默认端口是9870


<think>好的,用户现在问的是如何在Linux虚拟机下搭建Hadoop伪分布式环境,并运行WordCount实例来测试。之前用户已经询问过一些Hadoop的基本操作,比如创建目录、上传文件等,所以这次的问题可能是在更基础的环境搭建上。 首先,我需要考虑用户的使用场景。可能用户是刚开始学习Hadoop的学生或者开发者,需要在虚拟机里搭建环境进行实验。他们可能对Linux系统和Hadoop的配置不太熟悉,所以步骤需要详细,并且要指出可能遇到的坑。 接下来,用户的真实需求是完成伪分布式环境搭建,并成功运行示例程序。伪分布式模式适合单节点测试,用户可能没有多台机器,所以需要详细的配置步骤。另外,用户可能还希望确保环境正确配置,避免后续操作出错。 用户可能没有明确提到的深层需求包括环境配置的正确性、权限问题、SSH免密登录的设置,以及运行WordCount时可能遇到的常见错误。比如,配置文件的修改是否正确,Java环境变量是否设置,还有Hadoop的日志如何查看等。 现在需要整理搭建步骤,首先确保系统环境,比如安装Java,配置SSH。然后下载和解压Hadoop,接着修改配置文件,如hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml。这些文件的配置是伪分布式的关键,需要详细说明每个参数的作用。 之后是初始化HDFS,启动集群,并验证服务是否正常运行。这部分需要给出具体的命令,比如start-dfs.sh和start-yarn.sh,以及如何用jps检查进程。 然后是运行WordCount示例,需要创建输入目录,上传文件,运行任务,并检查输出结果。这里要确保用户知道如何正确使用HDFS命令,以及如何处理可能的错误,比如文件路径问题或者任务提交失败。 此外,注意事项也很重要,比如关闭防火墙,确保主机名解析正确,Java路径配置正确,以及如何排查常见问题。比如,如果DataNode没有启动,可能需要检查日志或者重新格式化NameNode。 最后,可能还需要给出一些扩展建议,比如学习YARN管理,HDFS原理,或者性能调优,帮助用户进一步学习。 需要确保回答结构清晰,步骤明确,命令正确,并且覆盖用户可能遇到的问题。同时,语言要简洁易懂,避免使用过于专业的术语,或者如果使用了,需要适当解释。例如,解释伪分布式和完全分布式的区别,或者NameNode和DataNode的作用。 还要检查之前的回答是否有相关的内容,比如之前用户的问题涉及Hadoop操作,现在则是环境搭建,可能需要引用之前的命令,但这里主要需要详细的环境搭建步骤。 总结下来,回答需要分步骤,每个步骤详细说明,给出命令示例,注意事项,以及验证步骤。同时,考虑用户可能遇到的常见问题,提供解决方案,比如如何处理SSH免密登录失败,或者Hadoop启动时端口被占用等问题。</think>以下是Hadoop伪分布式环境搭建及WordCount实例测试的详细指南: --- ### **一、环境准备** 1. **系统要求** - Linux虚拟机(推荐Ubuntu 20.04/CentOS 7) - Java 8+(必须配置JAVA_HOME) - SSH服务(需配置免密登录) - 硬盘空间≥10GB,内存≥4GB 2. **安装依赖** ```bash # 安装SSH和Java sudo apt-get update sudo apt-get install ssh openjdk-8-jdk -y ``` --- ### **二、Hadoop安装配置** #### **1. 下载与解压** ```bash wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local cd /usr/local && mv hadoop-3.3.4 hadoop sudo chown -R hadoop:hadoop hadoop # 假设用户名为hadoop ``` #### **2. 配置环境变量** 编辑`~/.bashrc`: ```bash export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根据实际路径修改 ``` 执行生效: ```bash source ~/.bashrc ``` #### **3. 修改Hadoop配置文件** > **配置文件位置**:`$HADOOP_HOME/etc/hadoop/` **① hadoop-env.sh** ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` **② core-site.xml** ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration> ``` **③ hdfs-site.xml** ```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> ``` **④ mapred-site.xml** ```xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ``` **⑤ yarn-site.xml** ```xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> ``` --- ### **三、SSH免密登录配置** ```bash ssh-keygen -t rsa -P &#39;&#39; -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 测试连接 ssh localhost ``` --- ### **四、HDFS初始化与启动** #### **1. 格式化NameNode** ```bash hdfs namenode -format ``` #### **2. 启动Hadoop集群** ```bash start-dfs.sh start-yarn.sh ``` #### **3. 验证服务状态** ```bash jps # 应显示以下进程: # NameNode # DataNode # ResourceManager # NodeManager # SecondaryNameNode ``` --- ### **五、运行WordCount实例** #### **1. 准备测试文件** ```bash echo "Hello World Hadoop" > input.txt echo "Hello Hadoop MapReduce" >> input.txt ``` #### **2. HDFS操作** ```bash hdfs dfs -mkdir -p /user/hadoop/input hdfs dfs -put input.txt /user/hadoop/input ``` #### **3. 执行MapReduce任务** ```bash hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \ wordcount /user/hadoop/input /user/hadoop/output ``` #### **4. 查看结果** ```bash hdfs dfs -cat /user/hadoop/output/part-r-00000 # 预期输出: # Hadoop 2 # Hello 2 # MapReduce 1 # World 1 ``` --- ### **六、常见问题排查** 1. **NameNode未启动** - 检查`hadoop-root-namenode-*.log`日志 - 重新格式化:`hdfs namenode -format` 2. **端口占用问题** ```bash netstat -tlnp | grep 9000 # 检查HDFS端口冲突 ``` 3. **权限错误** ```bash sudo chown -R hadoop:hadoop /usr/local/hadoop ``` --- ### **七、扩展建议** 1. **Web界面监控** - HDFS管理界面:`http://localhost:9870` - YARN管理界面:`http://localhost:8088` 2. **深入学习方向** - YARN资源调度机制 - HDFS读写流程源码分析 - MapReduce执行过程优化 --- 通过以上步骤即可完成伪分布式环境搭建和基础功能验证。如果遇到操作异常,建议优先检查日志文件(位于`$HADOOP_HOME/logs`目录)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值