Hadoop伪分布式配置

1、设置 HADOOP 环境变量

vim ~/.bashrc
# Hadoop Environment Variables
export HADOOP_HOME=/cjhx/appsoft/hadoop/hadoop-2.7.5
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
# 生效
source ~/.bashrc

2、Hadoop 的配置文件位于 hadoop-2.7.5/etc/hadoop/ 中,伪分布式需要修改2个配置文件

        core-site.xml

        hdfs-site.xml

        修改配置文件 core-site.xml

<configuration>
		<property>
			<name>hadoop.tmp.dir</name>
			<value>file:/usr/local/hadoop/tmp</value>
			<description>Abase for other temporary directories.</description>
		</property>
		<property>
			<name>fs.defaultFS</name>
			<value>hdfs://localhost:9000</value>
		</property>
	</configuration>

        修改配置文件 hdfs-site.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>

3、配置完成后,执行 格式化

./bin/hdfs namenode -format
./bin/hdfs datanode -format

4、开启 NaneNode 和 DataNode 守护进程

./sbin/start-dfs.sh
  • 若出现如下 SSH 的提示 “Are you sure you want to continue connecting”,输入 yes 即可
  • (启动时可能会有 WARN 提示 “WARN util.NativeCodeLoader…” 如前面提到的,这个提示不会影响正常使用)
  • (输入完yes后,会让输入root密码,直接输入即可,如果配置了ssh无密码登陆,则无需输入)
  • 通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode”和SecondaryNameNode(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。
  • 如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因

5、访问web页面查看namenode和datanode信息

       http://ip:port/dfshealth.html#tab-overview

6、运行Hadoop伪分布式实例

  • hdfs根目录创建input输入文件夹
hdfs dfs -mkdir /input
  • 将 ./etc/hadoop 中的 xml 文件作为输入文件复制到input文件夹中
hdfs dfs -put ./etc/hadoop/*.xml /input
  • 查看文件夹内容
hdfs dfs -ls /input
  • 伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /input /output 'dfs[a-z.]+'
  • 查看运行结果
hdfs dfs -cat /output/*

        注意:
        Hadoop 运行程序时,输出目录不能存在,否则会提示错误 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,因此若要再次执行,需要执行如下命令删除:

hdfs dfs -rm -r /output

        运行 Hadoop 程序时,为了防止覆盖结果,程序指定的输出目录(如 output)不能存在,否则会提示错误,因此运行前需要先删除输出目录。在实际开发应用程序时,可考虑在程序中加上如下代码,能在每次运行时自动删除输出目录,避免繁琐的命令行操作:

Configuration conf = new Configuration();
		Job job = new Job(conf);
		
		/* 删除输出目录 */
		Path outputPath = new Path(args[1]);
		outputPath.getFileSystem(conf).delete(outputPath, true);

7、关闭hadoop

./sbin/stop-dfs.sh

8、启动YARN(伪分布式不启动 YARN 也可以,一般不会影响程序执行)

        上述通过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。
    首先修改配置文件 mapred-site.xml,这边需要先进行重命名:

mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml

        修改配置文件 mapred-site.xml:

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

        修改配置文件 yarn-site.xml

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

        启动 YARN 了(需要先执行过 ./sbin/start-dfs.sh):

./sbin/start-yarn.sh      # 启动YARN
./sbin/mr-jobhistory-daemon.sh start historyserver  # 开启历史服务器,才能在Web中查看任务运行情况

        开启后通过 jps 查看,可以看到多了 NodeManager 和 ResourceManager 两个后台进程
    
    注:
        启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 之后,是 “mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster
    
    不启动 YARN 需重命名 mapred-site.xml
    如果不想启动 YARN,务必把配置文件 mapred-site.xml 重命名,改成 mapred-site.xml.template,需要用时改回来就行。否则在该配置文件存在,而未开启 YARN 的情况下,运行程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,这也是为何该配置文件初始文件名为 mapred-site.xml.template

9、关闭yarn脚本

./sbin/stop-yarn.sh
./sbin/mr-jobhistory-daemon.sh stop historyserver

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值