(超详细)0基础利用python调用Hadoop,云计算3

简介: (超详细)0基础利用python调用Hadoop,云计算

3.5 配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

1)配置mapred-site.xml

[atguigu@hadoop102 hadoop]$ vim mapred-site.xml

在该文件里面增加如下配置。

<!-- 历史服务器端地址 -->
<property>
   <name>mapreduce.jobhistory.address</name>
   <value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
   <name>mapreduce.jobhistory.webapp.address</name>
   <value>hadoop100:19888</value>
</property>

2)分发配置

[atguigu@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

3)在hadoop102启动历史服务器

[atguigu@hadoop102 hadoop]$ mapred --daemon start historyserver

4)查看历史服务器是否启动

[atguigu@hadoop102 hadoop]$ jps

5)查看JobHistory

http://hadoop100:19888/jobhistory

最后

这样我们的Hadoop就配置好了

[root@hadoop100 hadoop-3.1.3]# jps

3488 DataNode

3858 NodeManager

32405 Jps

3341 NameNode


[root@hadoop101 hadoop-3.1.3]# jps

3364 NodeManager

8132 Jps

3210 ResourceManager

2990 DataNode


[root@hadoop102 hadoop-3.1.3]# jps

3056 DataNode

3154 SecondaryNameNode

3336 NodeManager

7230 Jps

常见错误及解决方案

1)防火墙没关闭、或者没有启动YARN

INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032


2)主机名称配置错误


3)IP地址配置错误


4)ssh没有配置好


5)root用户和atguigu两个用户启动集群不统一


6)配置文件修改不细心


7)不识别主机名称


java.net.UnknownHostException: hadoop102: hadoop102


at java.net.InetAddress.getLocalHost(InetAddress.java:1475)


at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:146)


at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)


at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)


at java.security.AccessController.doPrivileged(Native Method)


at javax.security.auth.Subject.doAs(Subject.java:415)


解决办法:


(1)在/etc/hosts文件中添加192.168.10.102 hadoop102


(2)主机名称不要起hadoop hadoop000等特殊名称


8)DataNode和NameNode进程同时只能工作一个。


9)执行命令不生效,粘贴Word中命令时,遇到-和长–没区分开。导致命令失效


解决办法:尽量不要粘贴Word中代码。


10)jps发现进程已经没有,但是重新启动集群,提示进程已经开启。


原因是在Linux的根目录下/tmp目录中存在启动的进程临时文件,将集群相关进程删除掉,再重新启动集群。


11)jps不生效


原因:全局变量hadoop java没有生效。解决办法:需要source /etc/profile文件。


12)8088端口连接不上


[atguigu@hadoop102 桌面]$ cat /etc/hosts


注释掉如下代码


#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4


#::1 hadoop102

第二章Linux安装Python3

1、先查看系统python的位置在哪

whereis python

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-akMXpdmX-1639641787981)(C:Users86157AppDataLocalTemps8082686986.png)]


python2.7默认安装是在 /usr/bin目录中,切换到/usr/bin/

cd /usr/bin/
ll python*

从下面的图中我们可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后将python指向python3,然后python2指向python2.7,那么两个版本的python就能共存了。

2、下载python3的包之前,要先安装相关的依赖包,用于下载编译python3:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

运行了以上命令以后,就安装了编译python3所用到的相关依赖

3、默认的centos7是没有安装pip,先添加epel扩展源

yum -y install epel-release

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ioPbqZWm-1639641787981)(C:Users86157AppDataLocalTemps8082943629.png)]

4、安装pip

yum install python-pip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NxKtRCte-1639641787982)(C:Users86157AppDataLocalTemps8082913977.png)]

5、用pip装wget

pip install wget

6、用wget下载python3的源码包,或者自己先下载好,上传到服务器再安装,如果网络快可以直接安装

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz

7、编译python3源码包,解压

xz -d Python-3.6.8.tar.xz
tar -xf Python-3.6.8.tar

8、进入解压后的目录,依次执行下面命令进行手动编译

cd Python-3.6.8
./configure prefix=/usr/local/python3
make && make install

9、安装依赖zlib、zlib-deve

yum install zlib zlib
yum install zlib zlib-devel

10、最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录

11、添加软链接,将原来的链接备份

mv /usr/bin/python /usr/bin/python.bak

12、添加python3的软链接

ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

13、测试是否安装成功了

python -V
• 1

14、更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用

vi /usr/bin/yum

15、把第一行的#! /usr/bin/python 修改为如下

#! /usr/bin/python2
• 1

16、还有一个地方也需要修改

vi /usr/libexec/urlgrabber-ext-down

17、把第一行的#! /usr/bin/python 修改如下

#! /usr/bin/python2
• 1

18、启动python2

python2
• 1

19、启动python3

python

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-woCFJ3QO-1639641787983)(C:Users86157AppDataLocalTemps8086692414.png)]


参考文档centos安装python3详细教程_知行合一-CSDN博客_centos python

第三章集成python

任务目的: 统计单词数量

准备工作:

# 创建word.txt
vi word.txt
# 在word.txt中添加几行单词
hadoop is good
spark is fast
spark is better
python is basics
java also good
hbase is nosql
mysql is relational database
mongdb is nosql
relational database or nosql is good
# 将word.txt上传到hdfs的data文件夹下
hadoop dfs -put word.txt /data

map代码

# !/usr/bin/env python
import sys
words=[]
for i in sys.stdin:
        i=i.strip()
        word=i.split(" ")
        words.append(word)
for i in words:
        for j in i:
                print(j,1)

reduce代码

# !/usr/bin/env python
from operator import itemgetter
import sys
words=[]
num=[]
index=-1
for i in sys.stdin:
        word=i.strip()
        word=word.split(" ")
        word[1]=int(word[1])
        for i in range(len(words)):
                if(words[i][0]==word[0]):
                        index=i
        if(index==-1):
                words.append(word)
        if(index!=-1):
                words[index][1]+=1
                index=-1
for i in words:
        print(i)
cat word.txt |python map.py|python reduce.py 
['hadoop', 1]
['is', 8]
['good', 3]
['spark', 2]
['fast', 1]
['better', 1]
['python', 1]
['basics', 1]
['java', 1]
['also', 1]
['hbase', 1]
['nosql', 3]
['mysql', 1]
['relational', 2]
['database', 2]
['mongdb', 1]
['or', 1]

hadoop运行mapreduce

说明:mapreduce支持除java以外其他语言进行开发,需要使用_hadoop-streaming-2.7.3.jar_ 这个计算框架运行mapreuce任务。

# 运行mapreduce任务
hadoop jar share/hadoop/tools/lib/hadoop-streaming-3.1.3.jar -files /root/map.py,/root/reduce.py -mapper "python /root/map.py" -reducer "python /root/reduce.py" -input /input -output /out_python
//参数说明 hadoop jar +hadoop-streaming-2.7.3.jar所在路径 -file+
编写的map与reduce代码文件所在路径 -mapper +执行map文件命令 -reducer +执行reduce文件命令 -input +输入文件在hdfs的路径 -output +输出文件所在hdfs的路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eZyaPxTX-1639641787983)(C:Users86157Desktoppytest并发编程python调用hadoop成功.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5UGVxQNl-1639641787984)(C:Users86157AppDataLocalTemps9640868477.png)]


在完成作业之后我将文档上传到了我的个人博客

利用python集成hadoop实现并行计算.md - 小岚


参考文档:


(6条消息) mapreduce(python开发)_小爽123的博客-CSDN博客_mapreduce python


(6条消息) Linux系统安装Python3环境(超详细)_L-CSDN博客_linux安装python

                index=i
    if(index==-1):
            words.append(word)
    if(index!=-1):
            words[index][1]+=1
            index=-1

for i in words:

print(i)


cat word.txt |python map.py|python reduce.py


[‘hadoop’, 1]

[‘is’, 8]

[‘good’, 3]

[‘spark’, 2]

[‘fast’, 1]

[‘better’, 1]

[‘python’, 1]

[‘basics’, 1]

[‘java’, 1]

[‘also’, 1]

[‘hbase’, 1]

[‘nosql’, 3]

[‘mysql’, 1]

[‘relational’, 2]

[‘database’, 2]

[‘mongdb’, 1]

[‘or’, 1]

**hadoop运行mapreduce**
说明:mapreduce支持除java以外其他语言进行开发,需要使用*hadoop-streaming-2.7.3.jar* 这个计算框架运行mapreuce任务。

运行mapreduce任务

hadoop jar share/hadoop/tools/lib/hadoop-streaming-3.1.3.jar -files /root/map.py,/root/reduce.py -mapper “python /root/map.py” -reducer “python /root/reduce.py” -input /input -output /out_python

//参数说明 hadoop jar +hadoop-streaming-2.7.3.jar所在路径 -file+

编写的map与reduce代码文件所在路径 -mapper +执行map文件命令 -reducer +执行reduce文件命令 -input +输入文件在hdfs的路径 -output +输出文件所在hdfs的路径

[外链图片转存中...(img-eZyaPxTX-1639641787983)]
[外链图片转存中...(img-5UGVxQNl-1639641787984)]
在完成作业之后我将文档上传到了我的个人博客
[利用python集成hadoop实现并行计算.md - 小岚](http://8.142.109.15:8090/archives/%E5%88%A9%E7%94%A8python%E9%9B%86%E6%88%90hadoop%E5%AE%9E%E7%8E%B0%E5%B9%B6%E8%A1%8C%E8%AE%A1%E7%AE%97md) 
参考文档:
[(6条消息) mapreduce(python开发)_小爽123的博客-CSDN博客_mapreduce python](https://blog.csdn.net/qq_45014844/article/details/117438600) 
[(6条消息) Linux系统安装Python3环境(超详细)_L-CSDN博客_linux安装python](https://blog.csdn.net/L_15156024189/article/details/84831045) 
[(6条消息) Hadoop的安装和使用_战 胜的博客-CSDN博客_hadoop安装](https://blog.csdn.net/qq_45021180/article/details/104640540?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163964121216780274173287%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163964121216780274173287&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-104640540.pc_search_insert_es_download&utm_term=%E5%AE%89%E8%A3%85hadoop&spm=1018.2226.3001.4187)
相关文章
|
7月前
|
Serverless 数据处理 云计算
|
7月前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
756 1
|
4月前
|
机器学习/深度学习 持续交付 云计算
Python在云计算中的优势?
Python在云计算中的优势?【8月更文挑战第12天】
107 2
|
4月前
|
存储 分布式计算 监控
Hadoop在云计算环境下的部署策略
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。随着云计算技术的发展,越来越多的企业开始利用云平台的优势来部署Hadoop集群,以实现更高的可扩展性、可用性和成本效益。本文将探讨如何在公有云、私有云及混合云环境下部署和管理Hadoop集群,并提供具体的部署策略和代码示例。
170 0
|
7月前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
7月前
|
存储 开发工具 数据库
云计算:概念、优势与实践——附Python代码示例
云计算:概念、优势与实践——附Python代码示例
|
7月前
|
存储 大数据 数据挖掘
python数据分析——大数据和云计算
大数据和云计算作为当代信息技术的两大核心驱动力,正在以前所未有的速度改变着我们的生活、工作和思维方式。它们不仅为各行各业的创新提供了强大的技术支持,更是推动了整个社会的数字化转型。 从大数据的角度来看,它的核心价值在于通过对海量数据的收集、存储、分析和挖掘,发现其中的关联性和趋势,从而为决策提供更为科学、精准的依据。无论是商业领域的市场预测、消费者行为分析,还是公共服务领域的城市规划、交通管理,大数据都发挥着不可或缺的作用。同时,随着物联网、传感器等技术的普及,大数据的来源和种类也在不断扩展,这使得我们能够更全面地认识世界,把握规律。
111 1
|
7月前
|
分布式计算 Hadoop 大数据
【云计算与大数据计算】Hadoop MapReduce实战之统计每个单词出现次数、单词平均长度、Grep(附源码 )
【云计算与大数据计算】Hadoop MapReduce实战之统计每个单词出现次数、单词平均长度、Grep(附源码 )
338 1
|
7月前
|
分布式计算 Hadoop 大数据
|
7月前
|
开发工具 云计算 Docker