如何在Ubuntu上定制Hadoop功能
定制Ubuntu环境下的Hadoop功能,需围绕环境准备、核心配置、扩展功能集成、性能优化及验证五大环节展开,以下是具体步骤:
定制Hadoop前需完成底层环境配置,确保系统满足运行要求:
sudo apt update && sudo apt install -y openjdk-8-jdk
echo "export JAVA_HOME=$(readlink -f /usr/bin/javac | sed 's:/bin/javac::')" >> ~/.bashrc
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc
source ~/.bashrc
java -version # 验证安装(需显示Java 1.8.x版本)
sudo apt install -y openssh-server
ssh-keygen -t rsa # 生成密钥对(直接回车,默认路径)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 添加公钥到授权文件
chmod 600 ~/.ssh/authorized_keys # 设置权限(必须为600)
将~/.ssh/authorized_keys复制到所有Slave节点的对应目录,实现集群内免密登录。Hadoop的核心功能(HDFS分布式存储、MapReduce/YARN计算框架)需通过配置文件调整,以下是关键文件的定制说明:
/usr/local/并设置权限:wget https://downloads.apache.org/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
sudo chown -R $USER:$USER /usr/local/hadoop # 设置当前用户为所有者
~/.bashrc,方便全局调用:echo "export HADOOP_HOME=/usr/local/hadoop" >> ~/.bashrc
echo "export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin" >> ~/.bashrc
source ~/.bashrc
$HADOOP_HOME/etc/hadoop目录,修改以下文件:
fs.defaultFS):<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- Master节点IP/主机名 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!-- 临时文件目录 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单节点设为1,集群设为3 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode数据目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据目录 -->
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml):指定MapReduce运行框架为YARN:<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- 必须开启Shuffle服务 -->
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value> <!-- ResourceManager所在节点 -->
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value> <!-- 每个NodeManager可用内存(MB) -->
</property>
</configuration>
hdfs namenode -format
$HADOOP_HOME/sbin/start-dfs.sh # 启动HDFS
$HADOOP_HOME/sbin/start-yarn.sh # 启动YARN
使用jps命令验证进程(Master节点应看到NameNode、ResourceManager;Slave节点看到DataNode、NodeManager)。根据业务需求,可添加以下高级功能:
core-site.xml(添加ha.zookeeper.quorum)和hdfs-site.xml(配置dfs.nameservices、dfs.ha.namenodes等参数),并部署ZooKeeper集群。core-site.xml(开启hadoop.security.authentication为kerberos)、hdfs-site.xml(配置Kerberos相关参数)及用户keytab文件。hadoop-lzo库并配置core-site.xml(添加com.hadoop.compression.lzo.LzoCodec到io.compression.codecs)。根据集群规模和业务负载,调整以下参数提升性能:
yarn-site.xml中的yarn.nodemanager.resource.memory-mb(NodeManager总内存)和mapred-site.xml中的mapreduce.map.memory.mb/mapreduce.reduce.memory.mb(Map/Reduce任务内存)。mapred-site.xml中的mapreduce.tasktracker.map.tasks.maximum(每个TaskTracker的Map任务数)和mapreduce.tasktracker.reduce.tasks.maximum(每个TaskTracker的Reduce任务数)。hdfs-site.xml中的dfs.blocksize(默认128MB,大文件可设为256MB或更大),减少NameNode元数据压力。定制完成后,需通过以下步骤验证功能是否正常:
hdfs dfs -mkdir -p /input # 创建输入目录
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input # 上传配置文件到HDFS
hdfs dfs -cat /input/*.xml # 查看上传的文件内容
hdfs dfs -mkdir -p /output # 创建输出目录(若已存在需删除)
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output
hdfs dfs -cat /output/part-r-00000 # 查看统计结果
http://master:9870;YARN:http://master:8088)。通过以上步骤,可完成Ubuntu环境下Hadoop功能的定制,满足不同场景的业务需求。定制过程中需注意备份配置文件,避免误操作导致集群故障。