5.修改hadoop配置文件

本文档详细介绍了配置Hadoop的过程,包括创建Hadoop相关目录,如tmp、namenode和datanode,以及修改hadoop-env.sh、yarn-env.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml等配置文件的步骤。确保在本地为Hadoop设置正确的存储路径和环境设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建Hadoop使用到的目录

先在本地创建目录
/home/hadoop/hadoop
/home/hadoop/hadoop/tmp
/home/hadoop/hadoop/namenode
/home/hadoop/hadoop/datanode

master@master:/home/hadoop$ su hadoop  #切换到hadoop用户
密码: 

hadoop@master:~$ mkdir hadoop
hadoop@master:~$ chmod -R 777 hadoop
hadoop@master:~$ 
hadoop@master:~$ cd hadoop
hadoop@master:~/hadoop$ mkdir tmp
hadoop@master:~/hadoop$ chmod -R 777 tmp
hadoop@master:~/hadoop$ 
hadoop@master:~/hadoop$ mkdir namenode
hadoop@master:~/hadoop$ chmod -R 777 namenode
hadoop@master:~/hadoop$ 
hadoop@master:~/hadoop$ mkdir datanode
hadoop@master:~/hadoop$ chmod -R 777 datanode
hadoop@master:~/hadoop$ 

============

二、修改配置文件

(1)sudo gedit hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/data/jdk1.8.0_111

(2)sudo gedit yarn-env.sh

# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/data/jdk1.8.0_111

(3)sudo gedit slaves

slave1
slave2

(4)sudo core-site.xml
先在本地创建/home/hadoop/hadoop/tmp目录

<configuration>
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:8020</value>
 </property>

 <property>
  <name>hadoop.tmp.dir</name>
  <value>file:///home/hadoop/hadoop/tmp</value>
  <description>Abase for other temporary directories.</description>
 </property>

 <property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
  <value>*</value>
  <description>abouyun用户可以代理任意机器上的用户</description>
 </property>

 <property>
  <name>hadoop.proxyuser.hadoop.groups</name>
  <value>*</value>
  <description>abouyun用户代理任何组下的用户</description>
 </property>

 <property>
  <name>io.file.buffer.size</name>
  <value>131072</value>
 </property>

</configuration>

(5)sudo gedit hdfs-site.xml
注意: 需要在本地创建/home/hadoop/hadoop/namenode 和 /home/hadoop/hadoop/datanode 目录

<configuration>
 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>master:9001</value>
 </property>

 <property>
  <name>dfs.namenode.name.dir</name>
  <value>file:///home/hadoop/hadoop/namenode</value>
 </property>

 <property>
  <name>dfs.datanode.data.dir</name>
  <value>file:///home/hadoop/hadoop/datanode</value>
 </property>

 <property>
  <name>dfs.replication</name>
  <value>3</value>
 </property>

 <property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
 </property>
</configuration>

(6)sudo gedit mapred-site.xml
cp mapred-site.xml.template mapred-site.xml

<configuration>
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>

 <property>
  <name>mapreduce.jobhistory.address</name>
  <value>master:10020</value>
 </property>

 <property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>master:19888</value>
 </property>
</configuration>

(7)sudo gedit yarn-site.xml

<configuration>
 <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
 </property>

 <property>
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>

 <property>
  <name>yarn.resourcemanager.address</name>
  <value>master:8032</value>
 </property>

 <property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>master:8030</value>
 </property>

 <property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>master:8031</value>
 </property>

 <property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>master:8033</value>
 </property>

 <property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>master:8088</value>
 </property>
</configuration>

============

### 在Linux系统中部署全分布模式Hadoop集群的方法 全分布模式的Hadoop集群部署涉及多个节点的配置,包括名称节点(NameNode)、数据节点(DataNode)、资源管理器(ResourceManager)和节点管理器(NodeManager)。以下是部署过程中的关键步骤及配置文件修改方法: #### 1. 环境准备 在所有节点上安装Java环境,并确保每个节点之间可以通过SSH无密码访问。此外,需要配置主机名解析,确保每个节点能够通过主机名相互访问[^2]。 #### 2. 配置`core-site.xml` 该文件用于定义HDFS的默认文件系统名称节点地址。 ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://namenode-host:9000</value> </property> </configuration> ``` 这里将`namenode-host`替换为实际名称节点的主机名或IP地址[^1]。 #### 3. 配置`hdfs-site.xml` 此文件用于设置HDFS的副本数量及其他相关参数。 ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/data/hadoop/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/hadoop/datanode</value> </property> </configuration> ``` `dfs.replication`值应根据集群规模调整,通常为3表示每个块存储3个副本[^2]。 #### 4. 配置`mapred-site.xml` 此文件用于指定MapReduce框架运行在YARN上。 ```xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ``` #### 5. 配置`yarn-site.xml` 此文件用于配置YARN的相关参数。 ```xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>resourcemanager-host</value> </property> </configuration> ``` `resourcemanager-host`应替换为实际资源管理器的主机名[^3]。 #### 6. 配置`workers`文件 在`$HADOOP_HOME/etc/hadoop/workers`文件中列出所有从节点的主机名,每行一个。 ``` datanode1 datanode2 datanode3 ``` #### 7. 分发配置文件配置好的Hadoop文件夹分发到所有从节点。 ```bash scp -r /export/servers/hadoop-3.3.4 hd@datanode1:/export/servers/ scp -r /export/servers/hadoop-3.3.4 hd@datanode2:/export/servers/ ``` #### 8. 格式化HDFS 在名称节点上执行以下命令以格式化HDFS。 ```bash hdfs namenode -format ``` #### 9. 启动Hadoop集群 启动HDFS和YARN服务。 ```bash start-dfs.sh start-yarn.sh ``` ### Hadoop配置文件修改教程 Hadoop配置文件主要存储在`$HADOOP_HOME/etc/hadoop/`目录下,主要包括以下几个文件: - **`core-site.xml`**:定义HDFS的默认文件系统名称节点地址。 - **`hdfs-site.xml`**:配置HDFS的副本数量及其他参数。 - **`mapred-site.xml`**:指定MapReduce框架运行在YARN上。 - **`yarn-site.xml`**:配置YARN的相关参数。 #### 修改方法 1. 使用文本编辑器打开相应的配置文件。 ```bash nano $HADOOP_HOME/etc/hadoop/core-site.xml ``` 2. 根据需求添加或修改`<property>`标签内的键值对。 3. 保存并关闭文件后,重新启动Hadoop服务以使更改生效。 ```bash stop-dfs.sh stop-yarn.sh start-dfs.sh start-yarn.sh ``` ### 示例代码 以下是一个简单的WordCount程序实现: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); @Override protected void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值