hadoop学习(一)

一、运行环境:centos7
虚拟机的安装方法可以在网上搜
为减少后面的麻烦,建议各位在装虚拟机的时候连接方式选桥接
二、需要的软件:
jdk(linux版本的)链接:https://pan.baidu.com/s/1K1VJrQI9tSgwszOt1tfUgw
提取码:x8cd
hadoop 链接:https://pan.baidu.com/s/1YNBYrAm0z0d5AWexbgqKog
提取码:vadm
xshell(连接虚拟机的ip,在win上控制虚拟机)
链接:https://pan.baidu.com/s/1_mhuE7SPsIqVQQivbS6Ing
提取码:622q
xshell的使用在网上也可以找到
三、hadoop安装(//代表代码)

注意:这里的ip以192.168.224.10为例,实际以自己ip为准,查看ip可以在linux的terminal输入ip addr查看

1、单机版本安装:

解压Java,hadoop并设置.
把压缩包复制到路径/root
在win下载好的hadoop和jdk可以直接从xshell的界面拖进虚拟机里面
然后执行下面的操作

// tar -zxvf jdk-8u191-linux-x64.tar.gz
// tar -zxvf hadoop-2.7.1.tar.gz
// mv hadoop-2.7.1 /usr/local/
// mv jdk1.8.0_191/ /usr/local/

Java解压到并改名为 /usr/local/jdk
hadoop解压到/usr/local/hadoop

// cd /usr/local/
// mv hadoop-2.7.1/ hadoop
// mv jdk1.8.0_191/ jdk

// vim /etc/profile
	export JAVA_HOME=/usr/local/jdk
	export HADOOP_HOME=/usr/local/hadoop
	export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
	export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
// source /etc/profile

确认环境变量生效

// echo $PATH 

2、安装验证

// mkdir /usr/local/hadoop/input

准备测试文件(echo代表在命令行界面输出后面的话 ,>代表命令行界面显示的东西输入到文件中)

// echo hello hello world world > /usr/local/hadoop/input/info.txt

运行验证程序

// cd /usr/local/hadoop/
// hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount input output

检查运行结果

// cat /usr/local/hadoop/output/part-r-00000

伪分布式安装

// vim /usr/local/hadoop/etc/hadoop/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://192.168.224.10:9000</value>
	</property>
</configuration>

注意hdfs://是自己的ip:9000!!!!!

// vim /usr/local/hadoop/etc/hadoop/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>

Hadoop配置文件说明
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

执行NameNode格式化

// hdfs namenode -format

执行成功后可以看到下面这段话

...
INFO util.ExitUtil: Exiting with status 0
...

编辑hadoop配置文件,设置Java路径

// vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

把下面这句话加入hadoop-env.sh文件中

//export JAVA_HOME=/usr/local/jdk

开启服务

// start-dfs.sh

出现下面这段话代表执行成功
Starting namenodes on [server.example.com]
server.example.com: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-server.cluster.com.out
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-server.cluster.com.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-server.cluster.com.out
输入jps可以查看开启了什么

// jps

出现下面这段话代表成功

4499 NameNode
4807 SecondaryNameNode
4938 Jps
4638 DataNode
[root@server hadoop]// 

访问 http://192.168.224.10:50070

==============
运行Hadoop伪分布式实例

实际上有三种shell命令方式。

  1. hadoop fs
  2. hadoop dfs
  3. hdfs dfs

hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
hadoop dfs只能适用于HDFS文件系统
hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

在hadoop中创建测试目录

// hadoop fs -mkdir /input
// hadoop fs -ls /

以下输出表示创建成功

 Found 1 items
 drwxr-xr-x   - root supergroup          0 2019-01-01 06:12 /input

建立文件在hadoop中

// echo this is my computer this is my computer > /root/input.txt
// hadoop fs -put /root/input.txt /input/
// hadoop fs -cat /input/input.txt

以下输出表示创建成功

this is my computer this is my computer
root@server.example.com:/home/jim/Desktop// 

执行Jar文件的时候,需要保证output文件夹在hadoop中不存在

// cd /root
// hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount /input/input.txt /output

以上输出表示创建成功

computer	2
is	2
my	2
this	2

结果表示分析成功

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

// hdfs dfs -rm -r /output

关闭Hadoop

// stop-dfs.sh

=========================
YARN
(伪分布式不启动 YARN 也可以,一般不会影响程序执行) 有人可能会疑惑,怎么启动 Hadoop 后,见不到 JobTracker 和 TaskTracker,这是因为新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也称为 YARN,Yet Another Resource Negotiator)。

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,。上述通过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

// cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

修改mapred-site.xml文件

// vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

把下面这段话替换文件里的

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

同理

// vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
	<property>
    	<name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    </property>
</configuration>

启动Yarn,需要HDFS服务先启动起来 一般启动的时候我行start-all.sh的

// start-dfs.sh
// start-yarn.sh
// jps

以上输出表示创建成功

3762 ResourceManager 
3239 NameNode
4057 NodeManager
3562 SecondaryNameNode
3373 DataNode
4190 Jps

Yarn启动成功后多可NodeManager和ResourceManager

启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 之后,是 “mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况

访问: http://192.168.224.10:8088/cluster 即可查看

验证:Yarn任务调度

// hdfs dfs -rm -r /output 如果目录已经删除就不需要执行
// hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount /input/input.txt /output
// hadoop fs -cat /output/part-r-00000

以下输出表示创建成功

computer	2
is	2
my	2
this	2

以上结果表示分析成功

再次访问:http://192.168.224.10:8088/cluster 在页面上可以看到执行成功的任务。任务名称例如:“application_1546619214991_0001”。

YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN 就看实际情况了。

不启动 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。

停止Yarn和hdfs服务

// stop-yarn.sh
// stop-dfs.sh

如果需要禁止Yarn服务,执行下列命令:

mv /usr/local/hadoop/etc/hadoop/mapred-site.xml  
/usr/local/hadoop/etc/hadoop/mapred-site.xml.template
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值