基于python的hadoop(单机)环境搭建及使用
- 0.写在前面
- 1.虚拟机安装centos6.5
- 1.1安装流程
- 1.1.1系统安装
- 1.1.2修改静态ip(超级用户)
- 1.1.3更换可用源(超级用户)
- 1.1.4安装配置telnet(超级用户)
- 1.1.5关闭防火墙(超级用户)
- 1.2参考网址
- 2.在centos6.5中安装python
- 2.1配置流程
- 2.1.1安装python(超级用户)
- 2.1.2需要安装的库(普通用户,有pip3装这些库会很简单)
- 2.2参考网址
- 3.在centos6.5中搭建hadoop(单机)并设置免密登录
- 3.1配置流程
- 3.1.1安装jdk(超级用户,大部分教程装在/usr目录上)
- 3.1.2安装并配置hadoop(普通用户)
- 3.1.3测试一下(普通用户)
- 3.1.4设置免密登录(对应的用户)
- 3.3参考网址
- 4.使用hadoop
- 4.1hadoop常用命令
- 4.1.1 上传文件
- 4.1.2 查看文件内容
- 4.1.3 查看指定路径下的文件
- 4.1.4 删除文件
- 4.1.5下载文件
- 4.1.6 创建目录或文件
- 4.1.7 重命名文件
- 4.1.8 终止作业
- 4.3python中的mrjob库的运用
- 4.2参考网址
0.写在前面
多了解一些linux系统的基础。本记录贴基于Centos6.5版本,使用jdk1.7.0_71,python3.6.8,hadoop-2.5.2。文章内容为个人学习记录以及理解。如有错误,望斧正。
一、安装流程:
1.修改静态ip–>2.更换可用源–>3.安装python3(进入python3.6文件夹后先执行2.1的操作)–>4.安装pip3(本贴使用的是python3.6.8,相对较高版本不会出现需要更新ssh的情况)–>5.安装好相关库–>6.安装jdk
二、相关参考资源:
(1)Linux常用命令 (2)centos6.5 提取码:y0dz
(3)vm虚拟机 提取码:si64
(4)Python3.6.8 提取码:clhg
(5) jdk1.7_071 提取码:w5uj
(6)hadoop-2.5.2 提取码:nhn3
1.虚拟机安装centos6.5
1.1安装流程
安装虚拟机–>修改静态ip–>更换可用源
1.1.1系统安装
centos系统普通安装比较简单,略了。
查看当前系统的版本
cat /etc/redhat-release #任意选一项即可
cat /etc/issue #任意选一项即可
查看当前系统的内核
cat /proc/version #任意选一项即可
uname -a #任意选一项即可
无界面版安装参考参考网址
1.1.2修改静态ip(超级用户)
先查看虚拟机的网络配置
再执行以下代码,根据以上参数修改ifcfg-eth0文档
vi /etc/sysconfig/network-scripts/ifcfg-eth0
我的配置如下
在ifcfg-eth0文件中主要修改:
1.是BOOTPROTO改为静态
2.修改ONBOOT=“yes”,指明在系统启动时激活网卡,只有在激活状态的网卡才能去连接网络,进行网络通讯。
3.设置正确的ip地址,前三个码段要和虚拟机的网关一致
4.USERCTL=yes/no 是否允许非root用户控制该设备
5.IPADDR:ip地址
6.NETMASK:子网掩码(一般为255.255.255.0)
7.GATEWAY:网关
执行
service network restart
重启网络后,打开浏览器测试一下是否联网成功。
查看ip地址是否修改成功(以下命令任意都可以查看ip地址)
ip addr #任意选一项即可
ifconfig #任意选一项即可
其余配置信息,可用以下命令查看
route
1.1.3更换可用源(超级用户)
换源
超级用户模式下依次执行以下命令即可(以下命令是修改为阿里源的命令)
sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache
第一句命令我目前不知是什么含义
第二句是备份原本的的CentOS-Base.repo文件
第三句下载Centos-6-Vault-Aliyun.repo并以CentOS-Base.repo保存
第四句清除原本的缓存包
第五句保存下载新下载的缓存包
查看是否换源成功
cat /etc/yum.repos.d/CentOS-Base.repo
和下面类似有aliyum基本上是成功的了
注:如果在换源成功后依然不能使用的情况,可以尝试以下方式解决(我遇到的问题确实是这个,所以能解决)在超级用户下修改
vi /etc/yum.repos.d/epel.repo
把所有https改为http,如下
1.1.4安装配置telnet(超级用户)
安装前先查看telnet
rpm -qa | grep telnet
安装
yum install xinetd
yum install telnet
yum install telnet-server
修改配置文件
vim /etc/xinetd.d/telnet
用su权限把disable改为 no,如图
然后保存退出即可
最后使配置生效
service xinetd restart
先关闭防火墙,然后在物理机上设置一下
借用一下这个博客的图
然后就可以win+r唤出运行窗口并输入cmd打开命令行窗口
输入以下内容(虚拟机的ip地址)
telnet xxx.xxx.xxx.xxx
连接自己的虚拟机了
接着输入自己虚拟机用户的账号密码,账号密码正确就会连接上了。
1.1.5关闭防火墙(超级用户)
查询防火墙状态
service iptables status
如下是防火墙开启状态
如下是防火墙关闭状态
临时关闭防火墙
service iptables stop
永久关闭防火墙
chkconfig iptables off
1.2参考网址
(1)VMware中安装Centos6.5-64位-minimal镜像 (2)修改静态ip
(3)CentOS 6 2021 可用源
(4)CentOS 6和CentOS 7防火墙的关闭 (5)centos6.5上安装配置telnet服务
2.在centos6.5中安装python
2.1配置流程
安装python3–>安装相关库
2.1.1安装python(超级用户)
先安装一下系统依赖。(缺少依赖会导致hadoop无法运行,必须所有都装上,反正安装过的不会再安装
yum install -y zlib-devel bzip2-devel \
openssl-devel ncurses-devel sqlite-devel \
readline-devel tk-devel gcc make
下载python3.6.8。下载太早的版本会遇到ssh版本太低的问题,比较难处理,所以我们这里下载3.6.8版本,博主亲测不会出现ssh过低问题。
可以先打开自己想要安装的位置,再执行以下操作。
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
解压
压缩包解压到当前路径下
tar -zxvf Python-3.6.8.tgz
安装
先打开Python-3.6.8文件夹
cd Python-3.6.8
./configure --prefix=/usr/local/python3
make && make install
建立软连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3.6
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
最后升级一下pip3
pip3 install --upgrade pip
2.1.2需要安装的库(普通用户,有pip3装这些库会很简单)
安装好相关的python库,为后面使用hadoop准备。
(1)numpy
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
(2)matplotlib
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
(3)mrjob
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple mrjob
2.2参考网址
(1)Centos6 安装python3 pip3 ipython3 (2)如何修改CentOS 6.x上默认Python版本
(3)centos怎么卸载python (3)Centos6.5 编译安装python3.5版本,无法使用退格键方向键删除键等 (4)解决pip3 install下载很慢的问题(直接指定路径) (5)pip3下载速度慢的解决办法(永久修改)
3.在centos6.5中搭建hadoop(单机)并设置免密登录
3.1配置流程
安装jdk–>安装并配置hadoop–>设置免密登录
3.1.1安装jdk(超级用户,大部分教程装在/usr目录上)
下载jdk
下载到文件后先把文件从主机传到虚拟机,解压到当前压缩包位置可以忽略-C及后面内容
tar zxvf /文件所在路径/下载到的压缩包名称 /解压文件存放路径
关于解压问题见参考网址 关于对应文件配置环境变量的作用
/etc/profile
#此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件
中搜集shell的设置.
/etc/bashrc
#为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile
#每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设
置一些环境变量,执行用户的.bashrc文件.
~/.bashrc
#该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout
#当每次退出系统(退出bash shell)时,执行该文件.
配置环境变量
vim /home/hadoop/.bash_profile
追加如下内容(本贴的java是为hadoop装的,只需要javahome)
#JAVA
export JAVA_HOME=/usr/java/jdk1.8.0_131 #注意替换版本号
export PATH=$JAVA_HOME/bin:$PATH
然后使配置生效即可
source /home/hadoop/.bash_profile
按照参考网址3.3(1)的安装流程,即可完成安装
注意:修改/home/hadoop/.bash_profile时应当根据自己安装路径进行配置
3.1.2安装并配置hadoop(普通用户)
安装hadoop,把下载到的包解压到指定路径之后(建议放在普通用户的根目录下)
解压
解压到当前压缩包位置可以忽略-C及后面内容
tar zxvf /文件所在路径/下载到的压缩包名称 -C /解压文件存放路径
参数配置
编辑配置文件1
写上自己对应的java路径
vim /home/hadoop/hadoop-*/etc/hadoop/hadoop-env.sh
编辑配置文件2
vim /home/hadoop/hadoop-*/etc/hadoop/yarn-env.sh
写上自己对应的java路径
编辑配置文件3
vim /home/hadoop/hadoop-*/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<!-- 这里填的是你自己的ip,端口默认,hdfs工作模式-->
<value>hdfs://192.168.1.109:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-- 这里填的是你自定义的hadoop工作的目录,端口默认-->
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
编辑配置文件4
vim /home/hadoop/hadoop-*/etc/hadoop/hdfs-site.xml
<configuration>
<!-- 备份namenode节点访问位置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.109:50090</value>
</property>
<!-- 主namenode节点访问位置 -->
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.1.109:50070</value>
</property>
<!-- 这个参数设置为1,因为是单机版hadoop -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 设置hdfs的文件权限 -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!-- 指定namenode元数据存储位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/data/namenode</value>
</property>
<!-- 指定namenode日志文件存储位置 -->
<property>
<name>dfs.namenode.edits.dir</name>
<value>file:/usr/local/hadoop/data/edits</value>
</property>
<!-- 指定datanode数据存储位置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/data/datanode</value>
</property>
<!-- 设置datanode切片大小 128M-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
</configuration>
编辑配置文件5
vim /home/hadoop/hadoop-*/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.109:9001</value>
</property>
<!-- 开启历史任务 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.1.109:9002</value>
</property>
<!-- 开启历史任务访问端口 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.1.109:9003</value>
</property>
<!-- 开启mapreduce小任务模式 -->
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>ture</value>
</property>
</configuration>
编辑配置文件6
vim /home/hadoop/hadoop-*/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!--配置yarn主节点位置,默认端口8088 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.1.109</value>
</property>
<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>
</configuration>
配置环境变量
vim ~/.bash_profile
追加以下内容
#HADOOP
export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
保存并推出文件后使用,使配置生效
source ~/.bash_profile
在完成安装后可能会出现需要反复配置的问题。可以执行以下命令
注意:此处应该以超级用户下执行
编辑~/.bashrc
vim ~/.bashrc
在行末添加
source /home/hadoop/.bash_profile
然后
source ~/.bashrc
3.1.3测试一下(普通用户)
找到自己版本的hadoop的样例jar包的位置。
一般是在hadoop-2.5.2/share/hadoop/mapreduce/里,里面会有有个example包格式类似下面。
计算圆周率pi
hadoop jar /home/hadoop/hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar pi 10 10
如果后续有什么问题也也不应该是前面的配置问题 )
ps:一个题外话,我在装好python,jdk,hadoop之后,跑jar包没有问题。用python运行自己写的代码失败,最后发现是python依赖未装完整,如果发现问题可以尝试把我前面说的依赖都装一遍,然后删除再编译一次python。
3.1.4设置免密登录(对应的用户)
需要使用两台机器ssh可以互相免密登录
1.master生成 ssh公钥;
2.复制本机公钥到远程服务器.ssh/authorized_keys中,authorized_keys文件不存在则创建;
3.slave1生成公钥,把公钥追加到master的远程服务器.ssh/authorized_keys中;
4.把master的远程服务器.ssh/authorized_keys发送到slave1;
5.设置authorized_keys权限,.ssh和authorized_keys都应只有用户自己有写权限
6.结束。
需要使用机器ssh可以免密登录
1.生成 ssh公钥;
2.复制本机公钥到远程服务器.ssh/authorized_keys中,authorized_keys文件不存在则创建;
3.设置authorized_keys权限,.ssh和authorized_keys都应只有用户自己有写权限
4.结束。
具体操作
网上教程各种各样的说法,实际上只是密钥写错地方了。
超级用户免密
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa #生成密钥,-t 指定dsa加密方式,-P ''为不提供密码,-f 指定文件路径
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys #追加密钥内容到authorized_keys
chmod 600 ~/.ssh/authorized_keys #设置authorized_keys权限
普通用户免密
ssh-keygen -t dsa -P '' -f /home/hadoop/.ssh/id_dsa #生成密钥,-t 指定dsa加密方式,-P ''为不提供密码,-f 指定文件路径
cat /home/hadoop/.ssh/id_dsa.pub >> /home/hadoop/.ssh/authorized_keys #追加密钥内容到authorized_keys
chmod 600 ~/.ssh/authorized_keys #设置authorized_keys权限
3.3参考网址
(1)Linux Centos安装JDK1.8教程 (2)CentOS6.5下搭建Hadoop环境详细步骤
(3)Hadoop的jobhistoryserver配置
(4)hadoop进行免密登录详解
(5)Hadoop伪分布模式下启动需要密码登录,求解决SSH免密码登录
(6)Hadoop用户配置免密登陆
(7)mr-jobhistory-daemon.sh 启动和关闭脚本
(8)Linux解决每次进入命令要重新 source /etc/profile 的问题
(9)centos 6.5 解压 tar
(10)hadoop slaves文件_Hadoop 系列(四)—— Hadoop单机伪集群环境搭建
(11)搭建Hadoop+Python的大数据开发环境
(12)Hadoop2.5.2伪分布安装
4.使用hadoop
4.1hadoop常用命令
4.1.1 上传文件
hadoop dfs –put [文件目录]
hdfs dfs -put [文件目录]
4.1.2 查看文件内容
hadoop dfs –ls [文件目录]
hdfs dfs -ls [文件目录]
4.1.3 查看指定路径下的文件
hadoop dfs -cat [文件目录]
hdfs dfs -cat [文件目录]
4.1.4 删除文件
hadoop fs -rm -r -f [文件目录]
hdfs dfs -rm -r -f [文件目录]
4.1.5下载文件
hadoop fs -get [文件目录] [本地目录]
hdfs dfs -get [文件目录] [本地目录]
4.1.6 创建目录或文件
hadoop fs -mkdir [文件目录]
hdfs dfs -mkdir [文件目录]
4.1.7 重命名文件
hadoop fs -mv [文件目录] [本地目录]
hdfs dfs -mv [文件目录] [本地目录]
4.1.8 终止作业
hadoop job –kill [job-id]
4.3python中的mrjob库的运用
4.2参考网址
(1)Hadoop上传文件到hdfs中 (2)【hdfs 常用命令】数据put到hdfs
(3)解决 Unable to load native-hadoop library for your platform (4)MRJob 十分钟入门: 用 Python 轻松运行 MapReduce (5)Hadoop之MRjob入门
(6)Hadoop常用命令汇总