从零到一:Hadoop伪分布式环境搭建实战指南
1. 环境准备:从Windows到Linux的跨越
第一次接触Hadoop的朋友们,多半会遇到一个尴尬的问题:这玩意儿在Windows上跑不起来啊!作为一个过来人,我完全理解这种无奈。不过别担心,我们可以用虚拟机在Windows上搭建一个完美的Linux学习环境。
推荐使用VMware Workstation Player这款免费虚拟机软件,它比VirtualBox更稳定,对新手更友好。下载地址直接去官网就能找到最新版。安装过程就是一路"下一步",跟装QQ差不多简单。重点是要准备好CentOS 7的镜像文件,建议选择Minimal版本,体积小且干净。我常用的是CentOS-7-x86_64-Minimal-2009.iso这个版本,大概900MB左右。
这里有个小技巧:创建虚拟机时,建议分配至少2核CPU+4GB内存。我刚开始只给1GB内存,跑Hadoop时卡得怀疑人生。磁盘空间建议40GB起步,选择"将虚拟磁盘拆分成多个文件"更方便迁移。网络连接模式选NAT就行,这样虚拟机既能上网又不会干扰主机网络。
2. CentOS 7系统安装详解
安装CentOS 7时最容易卡在分区环节。对于新手,我强烈建议选择"自动配置分区",系统会帮你创建合理的/boot、swap和/分区。记得勾选"启用网络",这样安装完就能直接联网了。
安装完成后第一件事就是换yum源!默认的国外源速度慢到哭。我习惯用阿里云的镜像源,替换方法很简单:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum makecache
接着要关闭烦人的防火墙和SELinux(学习环境可以关,生产环境千万别):
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
3. Java环境搭建的避坑指南
Hadoop是用Java写的,所以JDK必须装对版本。经过多次踩坑验证,JDK 8是最稳定的选择。不建议用yum安装默认的openjdk,某些Hadoop功能会有兼容性问题。
我的安装流程是这样的:
- 去Oracle官网下载jdk-8u361-linux-x64.tar.gz
- 解压到/usr/local目录
- 配置环境变量:
echo 'export JAVA_HOME=/usr/local/jdk1.8.0_361' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
source ~/.bashrc
验证安装时,不仅要看java -version,还要确认javac也能用。曾经有次我只装了JRE没装JDK,后面配置Hadoop时各种报错,排查了半天才发现问题。
4. Hadoop伪分布式集群搭建
到官网下载hadoop-2.7.7.tar.gz(3.x版本配置方式有差异),解压到/usr/local目录后,需要修改以下几个关键配置文件:
core-site.xml配置HDFS地址:
<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配置副本数(伪分布式设为1):
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
最关键的步骤是格式化NameNode:
hdfs namenode -format
这里有个大坑:如果格式化多次,一定要先删除tmp目录下的所有文件,否则会报"Incompatible clusterIDs"错误。我第一次搭建时就因为这个重装了三次系统...
5. SSH免密登录配置
Hadoop集群管理需要SSH免密登录,很多新手在这里会卡住。正确的操作顺序是:
- 生成密钥对:
ssh-keygen -t rsa(直接回车三次) - 把公钥写入授权文件:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys - 修改权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
测试时不要直接用ssh localhost,这样看不出问题。建议先用ssh -v localhost查看详细日志,我曾经因为.ssh目录权限不对折腾了一下午。
6. 集群启动与验证
启动HDFS的正确姿势:
start-dfs.sh
用jps命令应该能看到这三个进程:
- NameNode
- DataNode
- SecondaryNameNode
浏览器访问http://localhost:9870 应该能看到HDFS管理界面。如果打不开,可能是防火墙没关,或者hosts文件没配置localhost解析。
最后用经典的WordCount测试:
hdfs dfs -mkdir /input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output
成功运行后,你会看到一堆MapReduce的日志输出,最后在/output目录下生成_SUCCESS和part-r-00000文件。用hdfs dfs -cat /output/part-r-00000就能看到词频统计结果了。第一次看到这个结果时,我激动得差点从椅子上跳起来——这意味着你的伪分布式集群真的跑起来了!
更多推荐
所有评论(0)