实验环境

CentOS镜像为CentOS-7-x86_64-Everything-1804.iso

虚机配置

节点名称 IP地址 子网掩码 CPU/内存 磁盘 安装方式
master 192.168.204.101 255.255.255.0 1核心/4GB 100GB GNOME Desktop
slave1 192.168.204.111 255.255.255.0 1核心/2GB 100GB Minimal Install
slave2 192.168.204.112 255.255.255.0 1核心/2GB 100GB Minimal Install

软件清单

软件名称 版本号
Hadoop 2.8.1
Hive 2.1.1
Sqoop 1.4.6
Java 1.8.0_131
MariaDB 5.5.60
Python 2.7.5/3.6.2

配置基本环境

安装虚拟机

master节点以GNOME Desktop安装

slave节点以Minimal Install安装

用户名 密码
root hadoop
hadoop hadoop

配置网络

该项同时在master、slave1、slave2节点配置。

该项使用root身份配置。

检查网络连通性

[root@localhost ~]# ping 114.114.114.114 -c 4

修改dns地址

[root@localhost ~]# vi /etc/resolv.conf
#修改为
nameserver 223.5.5.5

更换阿里yum源 [1]

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 http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache

更换阿里pip源 [2]

mkdir ~/.pip/
vim ~/.pip/pip.conf

写入以下内容

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

yum方式安装基本工具

[root@localhost ~]# yum install -y tree vim epel-* net-tools ntpdate wget

编辑网络配置

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

根据虚机配置表配置以下信息

TYPE="Ethernet"
UUID="17cd99b5-4414-4f6e-b7a3-e573104dd306"
ONBOOT="yes"
DEVICE="ens33"
NAME="ens33"
BOOTPROTO="static"
IPADDR=192.168.204.101
NETMASK=255.255.255.0
GATEWAY=192.168.204.2
DNS1=223.5.5.5

保存退出后,重启网络服务

[root@localhost ~]# systemctl restart network

查看网络信息

[root@localhost ~]# ifconfig

配置防火墙

该项同时在master、slave1、slave2节点配置。

该项使用root身份配置。

关闭并禁止自动启动防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

禁止SELinux

[root@localhost ~]# setenforce 0

配置禁止开机自启SELinux

[root@localhost ~]# vim /etc/selinux/config

SELINUX=enforcing改成SELINUX=disabled

修改主机名

该项同时在master、slave1、slave2节点配置。

该项使用root身份配置。

修改network配置文件

[root@localhost ~]# vim /etc/hostname

主节点修改为master,从节点相应修改为slave1slave2

输入以下命令(从节点修改为相应名称)

[root@localhost ~]# hostname master

重启虚机

[root@localhost ~]# reboot

重新进入控制台,检验修改

[root@master ~]# hostname

修改hosts文件

该项同时在master、slave1、slave2节点配置。

该项使用root身份配置。

输入以下命令,配置hosts文件

[root@master ~]# vim /etc/hosts

根据实验环境,添加以下条目至hosts文件

192.168.204.101     master
192.168.204.111 slave1
192.168.204.112 slave2

检查hosts是否生效

ping master
ping slave1
ping slave2

配置时钟同步

该项同时在master、slave1、slave2节点配置。

该项使用root身份配置。

配置定时任务

crontab -e

#输入以下配置,设置同步时间的定时任务
0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

使用下列命令,使时间立即同步

/usr/sbin/ntpdate cn.pool.ntp.org

配置免密登录

该项使用hadoop用户身份配置。

该项按照步骤依次在各个节点配置。

主节点master

在主节点master输入以下命令生成秘钥

[hadoop@master ~]$ ssh-keygen -t rsa

复制公钥文件

[hadoop@master ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

从节点slave1

在从节点slave1输入以下命令生成秘钥,并将秘钥发送给master

[hadoop@slave1 ~]$ ssh-keygen -t rsa
[hadoop@slave1 ~]$ cp ~/.ssh/id_rsa.pub ~/.ssh/slave1-id_rsa.pub
[hadoop@slave1 ~]$ scp ~/.ssh/slave1-id_rsa.pub hadoop@master:~/
[hadoop@slave1 ~]$ rm -rf ~/.ssh/slave1-id_rsa.pub

从节点slave2

在从节点slave2输入以下命令生成秘钥,并将秘钥发送给master

[hadoop@slave2 ~]$ ssh-keygen -t rsa
[hadoop@slave2 ~]$ cp ~/.ssh/id_rsa.pub ~/.ssh/slave2-id_rsa.pub
[hadoop@slave2 ~]$ scp ~/.ssh/slave2-id_rsa.pub hadoop@master:~/
[hadoop@slave2 ~]$ rm -rf ~/.ssh/slave2-id_rsa.pub

主节点master

复制从节点的秘钥文件,追加到authorized_keys文件中

[hadoop@master ~]$ cat ~/slave1-id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@master ~]$ cat ~/slave2-id_rsa.pub >> ~/.ssh/authorized_keys

修改authorized_keys文件权限,并复制到从节点

[hadoop@master ~]$ chmod 600 ~/.ssh/authorized_keys
[hadoop@master ~]$ scp ~/.ssh/authorized_keys hadoop@slave1:~/
[hadoop@master ~]$ scp ~/.ssh/authorized_keys hadoop@slave2:~/

从节点slave1

修改authorized_keys文件权限,并复制到ssh文件夹

[hadoop@slave1 ~]$ chmod 600 ~/authorized_keys
[hadoop@slave1 ~]$ cp ~/authorized_keys ~/.ssh

从节点slave2

修改authorized_keys文件权限,并复制到ssh文件夹

[hadoop@slave2 ~]$ chmod 600 ~/authorized_keys
[hadoop@slave2 ~]$ cp ~/authorized_keys ~/.ssh

主节点master

查看authorized_keys文件内容

[hadoop@master ~]$ cat ~/.ssh/authorized_keys

测试主节点master到从节点的登录情况

[hadoop@master ~]$ ssh slave1
[hadoop@master ~]$ ssh slave2

导入软件包

主节点master

创建软件包目录、数据目录、代码目录

mkdir ~/software
mkdir ~/data
mkdir ~/code

将软件包上传至~/software目录

将jdk复制到从节点

cp ~/software/jdk-*.tar.gz ~/
scp ~/jdk-*.tar.gz hadoop@slave1:~/
scp ~/jdk-*.tar.gz hadoop@slave2:~/

安装JDK

该项同时在master、slave1、slave2节点配置。

该项使用root身份配置。

解压安装java

mkdir /usr/java
cp /home/hadoop/jdk-*.tar.gz /usr/java
cd /usr/java
tar -xzvf jdk-*.tar.gz

配置环境变量

vim /home/hadoop/.bash_profile

# 追加以下内容
#JAVA
export JAVA_HOME=/usr/java/jdk1.8.0_131 #注意替换版本号
export PATH=$JAVA_HOME/bin:$PATH

刷新环境变量

source /home/hadoop/.bash_profile

查看Java版本

java -version

安装Hadoop

该项仅在master主节点配置

该项使用hadoop身份配置。

解压Hadoop安装包

解压安装包

cp ~/software/hadoop-*.tar.gz ~/
cd ~
tar -xzvf hadoop-*.tar.gz
cd hadoop-*

配置Hadoop

配置环境变量 hadoop-env.sh

输入以下命令,配置hadoop配置文件中的jdk路径

vim /home/hadoop/hadoop-*/etc/hadoop/hadoop-env.sh

export JAVA_HOME={JAVA_HOME}

修改为export JAVA_HOME=/usr/java/jdk1.8.0_131

注意版本号

配置环境变量 yarn-env.sh

输入以下命令,配置yarn配置文件中的jdk路径

vim /home/hadoop/hadoop-*/etc/hadoop/yarn-env.sh

export JAVA_HOME=/home/y/libexec/jdk1.6.0/

修改为export JAVA_HOME=/usr/java/jdk1.8.0_131/

配置核心组件 core-site.xml

输入以下命令

 vim /home/hadoop/hadoop-*/etc/hadoop/core-site.xml

用以下文本替代

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>
</configuration>

配置 hdfs-site.xml

输入以下命令

vim /home/hadoop/hadoop-*/etc/hadoop/hdfs-site.xml

用以下文本替代

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

配置 yarn-site.xml

输入以下命令

vim /home/hadoop/hadoop-*/etc/hadoop/yarn-site.xml

用以下文本替代

<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>

配置 mapred-site.xml

输入以下命令

vim /home/hadoop/hadoop-*/etc/hadoop/mapred-site.xml

写入以下文本

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

配置slaves文件

输入以下命令

vim /home/hadoop/hadoop-*/etc/hadoop/slaves

替换成以下内容

slave1
slave2

复制到从节点

输入以下命令,将master的hadoop程序复制到从节点

scp -r /home/hadoop/hadoop-2.8.1/ hadoop@slave1:~/
scp -r /home/hadoop/hadoop-2.8.1/ hadoop@slave2:~/

配置Hadoop环境变量

输入以下命令,添加环境变量

vim ~/.bash_profile

#追加以下内容
#HADOOP
export HADOOP_HOME=/home/hadoop/hadoop-2.8.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

刷新环境变量

source ~/.bash_profile

创建数据目录

该项仅在master主节点配置

该项使用hadoop身份配置。

在master,slave上,创建数据目录

mkdir /home/hadoop/hadoopdata

在master上,执行格式化HDFS文件系统命令

hdfs namenode -format

出现以下信息,表示格式化成功

启动Hadoop集群

执行以下命令,启动Hadoop集群

start-all.sh

Hadoop启动过程如下

在master上执行以下命令,查看进程

jps

正常情况下,会出现如下信息:

在slave上执行以下命令,查看进程

jps

正常情况下,会出现如下信息:

查看Web UI

浏览器输入http://master:50070/,检查NameNode和DataNode是否正常启动

浏览器输入http://master:18088/,检查Yarn是否正常

验证Hadoop——跑一个Demo

Hadoop自带有PI示例的jar包,执行以下命令调用集群进行计算:

hadoop jar /home/hadoop/hadoop-2.8.1/share/hadoop/mapreduce/hadoopmapreduce-examples-2.8.1.jar pi 10 10

运行过程

运行结果如下

验证HDFS

该项仅在master主节点配置

该项使用hadoop身份配置。

在命令行依次输入以下命令

hdfs dfs -ls /
hdfs dfs -mkdir /data
hdfs dfs -ls /

可查看刚刚创建的目录

编辑一个文本文件

mkdir /home/hadoop/data/words
vim /home/hadoop/data/words/word.txt

写入以下内容

hadoop hello world
hello hadoop hello
world hadoop hello

将本地文件上传至HDFS

hdfs dfs -mkdir /data/words
hdfs dfs -put /home/hadoop/data/word/*.txt /data/words/
hdfs dfs -ls /data/words/
hdfs dfs -cat /data/words/*.txt

安装Hive

该项仅在master主节点配置

该项使用root身份配置。

解压Hive安装包

解压安装Hive

cp /home/hadoop/software/apache-hive-*-bin.tar.gz /home/hadoop/
cd /home/hadoop
tar -xzvf /home/hadoop/apache-hive-*-bin.tar.gz
cd /home/hadoop/apache-hive-*-bin

安装MariaDB

安装配置MariaDB

yum install mariadb-server -y

启动MariaDB

systemctl start mairadb
systemctl enable mairadb

输入以下命令,修改MariaDB密码

mysql_secure_installation

登录数据库,添加数据

mysql -uroot -p123456

输入以下SQL语句,添加mysql用户

grant all on *.* to hadoop@'%' identified by 'hadoop';
grant all on *.* to hadoop@'localhost' identified by 'hadoop';
grant all on *.* to hadoop@'master' identified by 'hadoop';
flush privileges;
create database hive_1;
quit;

配置Hive

该项仅在master主节点配置

该项使用hadoop身份配置。

输入以下命令,修改Hive配置

vim /home/hadoop/apache-hive-*-bin/conf/hive-site.xml

添加以下配置信息

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive_1?characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
</configuration>

将mysql的java connector复制到依赖库中

cd ~/software/
tar -xzvf mysql-connector-java-5.1.27.tar.gz
cd ~/software/mysql-connector-java-5.1.27
cp mysql-connector-java-5.1.27-bin.jar ~/apache-hive-*bin/lib/

将hive添加至环境变量

vim ~/.bash_profile

#添加以下内容
#HIVE
export HIVE_HOME=/home/hadoop/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin

刷新环境变量

source ~/.bash_profile

初始化hive元数据库 [3]

schematool -dbType mysql -initSchema

启动并验证Hive

输入以下命令,启动hive

hive

正常启动如下:

输入以下HQL语句

show databases;
create database hadoop_data;
show databaes;

安装Sqoop

该项仅在master主节点配置

该项使用hadoop身份配置。

解压Sqoop安装包

cp ~/software/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz ~/
cd ~
tar -xzvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
cd ~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha

配置MySQL连接器

cd ~/software/mysql-connector-java-5.1.27
cp mysql-connector-java-5.1.27-bin.jar ~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/

配置Sqoop

输入以下命令,编辑配置文件

cd ~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/conf/
cp sqoop-env-template.sh sqoop-env.sh

替换为以下内容

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.8.1 #Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.8.1 #set the path to where bin/hbase is available
#export HBASE_HOME= #Set the path to where bin/hive is available
export HIVE_HOME=/home/hadoop/apache-hive-2.1.1-bin

替换时注意版本号

配置环境变量

输入以下命令,修改环境变量

vim ~/.bash_profile

#追加以下内容
#SQOOP
export SQOOP_HOME=/home/hadoop/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
export PATH=$SQOOP_HOME/bin:$PATH

刷新环境变量

source ~/.bash_profile

此时,~/.bash_profile文件的内容如下

启动并验证Sqoop

执行以下命令,查看安装是否成功

sqoop help

正确情况,如图所示

安装Python3.X [4]

该项在各个节点使用root用户配置

安装依赖包

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

备份原Python可执行文件

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

下载并解压python3.x

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar -xvJf Python-3.6.2.tar.xz
cd Python-3.*

编译安装

./configure prefix=/usr/local/python3
make && make install

创建软连接

创建软连接

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

查看/usr/bin/目录下的python程序

ls -l /usr/bin/python*

输入命令查看各程序版本

python -V
python2 -V
python2.7 -V
python3 -V
python3.6 -V

修改对python2的依赖

  1. 修改yum配置
vim /usr/bin/yum

#!/usr/bin/python修改为#!/usr/bin/python2

  1. 修改urlgrabber-ext-down配置
vim /usr/libexec/urlgrabber-ext-down

#!/usr/bin/python修改为#!/usr/bin/python2

配置pip3

mv /usr/bin/pip /usr/bin/pip.bak
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

查看修改情况

ls -l /usr/bin/pip*

一键安装脚本

centos7 安装Python3.x的脚本

网速略差时不建议使用

#!/bin/bash

yum install -y zlib-devel bzip2-devel openssl-devel \
ncurses-devel sqlite-devel readline-devel tk-devel gcc make mv /usr/bin/python /usr/bin/python.bak cd ~
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar -xvJf Python-3.6.2.tar.xz
cd ~/Python-3.6.2/ ./configure prefix=/usr/local/python3
make && make install ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/python3 /usr/bin/python3.6 ls -l /usr/bin/python*
python -V
python2 -V
python2.7 -V
python3 -V
python3.6 -V sed -i 's/#!\/usr\/bin\/python/#!\/usr\/bin\/python2/g' /usr/bin/yum
sed -i 's/#!\/usr\/bin\/python/#!\/usr\/bin\/python2/g' /usr/libexec/urlgrabber-ext-down mv /usr/bin/pip /usr/bin/pip.bak
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 ls -l /usr/bin/pip*

安装开发软件

在master节点使用root用户

安装IPython

pip3 install ipython

安装数据分析的常用库

pip3 install matplotlib
pip3 install numpy
pip3 install PyMySQL
pip3 install PrettyTable
mkdir /home/hadoop/code/lib/
wget -O /home/hadoop/code/lib/echarts.js http://echarts.baidu.com/dist/echarts.js

安装Spyder [5]

cd /home/hadoop/
wget https://files.pythonhosted.org/packages/e5/e2/cc0dff05e9fd98799f9255809e8359bc05d62c4ff850b1f7cf22d3d662c0/spyder-3.3.4.tar.gz
cp ./spyder-3.3.4.tar.gz /usr/local
cd /usr/local
tar -xzvf ./spyder-3.3.4.tar.gz
cd ./spyder-3.3.4
python3 setup.py install
ln -s /usr/local/spyder-3.3.4/scripts/spyder3 /usr/bin/spyder3

在master节点使用hadoop用户

打开Spyder

spyder3

使用Python编写一个WordCount示例

在master节点使用hadoop用户

下载几部英文小说

cd ~/data/
wget https://files.cnblogs.com/files/connect/novel.tar.gz
tar -xzvf novel.tar.gz

将文本文件上传到HDFS

hdfs dfs -mkdir /data/novel
hdfs dfs -put /home/hadoop/data/novel/*.txt /data/novel/
hdfs dfs -ls /data/novel/

编写mapper.py [6]

#!/usr/bin/python3
#path:/home/hadoop/code/mapper.py
import sys
for line in sys.stdin:
line = line.strip()
words = line.split()
for word in words:
print("%s\t%s" % (word, 1))
pass

编写reducer.py [6]

#!/usr/bin/python3
#path:/home/hadoop/code/reducer.py
import sys
current_word = None
current_count = 0
word = None
for line in sys.stdin:
line = line.strip()
word, count = line.split('\t', 1)
try:
count = int(count)
except ValueError:
continue
if current_word == word:
current_count += count
else:
if current_word:
print("%s\t%s" % (current_word, current_count))
current_count = count
current_word = word if word == current_word:
print("%s\t%s" % (current_word, current_count))
pass

给Python程序赋予可执行权限

chmod +x /home/hadoop/code/*.py

调用集群进行计算 [6]

hadoop jar /home/hadoop/hadoop-*/share/hadoop/tools/lib/hadoop-streaming-2.5.2.jar \
-file /home/hadoop/code/mapper.py \
-file /home/hadoop/code/reducer.py \
-mapper /home/hadoop/code/mapper.py \
-reducer /home/hadoop/code/reducer.py \
-input /data/novel/* \
-output /data/result/

查看HDFS上的结果

hdfs dfs -ls /data/result
hdfs dfs -cat /data/result/part-*

将HDFS上的结果下载到本地

cd ~/data
mkdir ./result
hdfs dfs -get /data/result/part-* /home/hadoop/data/result/
cat /home/hadoop/data/result/part-* | more

将数据加载至Hive

进入hive,将数据加载至hive,然后统计top20高频词

-- 创建数据库
create database if not exists wordcount_data; -- 使用wordcount_data数据库
use wordcount_data; -- 创建数据表
create table if not exists wordcount1 (
word string,
count int
) row format delimited
fields terminated by '\t'
stored as textfile; -- 加载数据
load data inpath '/data/result/' overwrite into table wordcount_data.wordcount1; -- 查询TOP20高频词
select * from wordcount_data.wordcount1
order by count desc
limit 20; -- 将TOP20高频词导入新的数据表
create table if not exists wordcount1_top20
as
select word, count
from wordcount_data.wordcount1
order by count desc
limit 20; -- 查看wordcount1_top20数据表中的数据
select * from wordcount1_top20 where true;

查询结果

创建MySQL数据表

进入MySQL数据库

mysql -uhadoop -phadoop

创建MySQL数据库

-- 创建数据库
create database if not exists wordcount_data; -- 使用wordcount_data
use wordcount_data; -- 创建数据表
create table if not exists wordcount1_top20 (
word varchar(128),
count int
)default charset=utf8; -- 查看创建的数据表
show tables;

利用Sqoop将数据导出至MySQL

master节点执行导出操作 [7]

sqoop export \
--connect jdbc:mysql://192.168.204.101:3306/wordcount_data \
--username hadoop \
--password hadoop \
--table wordcount1_top20 \
--export-dir "/user/hive/warehouse/wordcount_data.db/wordcount1_top20" \
--fields-terminated-by '\001'

导出成功如图

查看MySQL数据库

use wordcount_data;
show tables;
select * from wordcount1_top20 where 1;

使用matplotlib生成图表 [8]

程序如下:

#!/usr/bin/python3

import pymysql
import numpy as np
import matplotlib.pyplot as plt # get data from mysql
def get_data():
db = pymysql.connect('192.168.204.101', 'hadoop', 'hadoop', 'wordcount_data')
sql = 'select * from wordcount1_top20 where 1 order by count desc limit 20;'
cursor = db.cursor()
length = cursor.execute(sql)
data = cursor.fetchall()
db.close()
data = np.array(data)
data = data.T
return data # show chart
def show_chart(data):
labels, sizes = data[0], data[1]
fig1, ax1 = plt.subplots()
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)
ax1.axis('equal')
plt.show() if __name__ == '__main__':
data = get_data()
show_chart(data)

效果如下

参考资料

本文链接: https://www.cnblogs.com/connect/p/hadoop-python-dev-env.html

搭建Hadoop+Python的大数据开发环境的更多相关文章

  1. windows下大数据开发环境搭建(2)——Hadoop环境搭建

    一.所需环境 ·Java 8 二.Hadoop下载 http://hadoop.apache.org/releases.html 三.配置环境变量 HADOOP_HOME: C:\hadoop- Pa ...

  2. 搭建大数据开发环境-Hadoop篇

    前期准备 操作系统 hadoop目前对linux操作系统支持是最好的,可以部署2000个节点的服务器集群:在hadoop2.2以后,开始支持windows操作系统,但是兼容性没有linux好.因此,建 ...

  3. windows下大数据开发环境搭建(1)——Hadoop环境搭建

    所需环境 jdk 8 Hadoop下载 http://hadoop.apache.org/releases.html 配置环境变量 HADOOP_HOME: C:\hadoop-2.7.7 Path: ...

  4. windows下大数据开发环境搭建(4)——Spark环境搭建

    一.所需环境 · Java 8 · Python 2.6+ · Scala · Hadoop 2.7+ 二.Spark下载与解压 http://spark.apache.org/downloads.h ...

  5. windows下大数据开发环境搭建(1)——Java环境搭建

    一.Java 8下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载之后 ...

  6. windows下大数据开发环境搭建(3)——Scala环境搭建

    一.所需环境 ·Java 8   二.下载Scala https://www.scala-lang.org/download/ 三.配置环境变量 SCALA_HOME: C:\scala Path: ...

  7. 使用python fabric搭建RHEL 7.2大数据基础环境以及部分优化

    1.使用python fabric进行Linux基础配置 使用python,可以让任何事情高效起来,包括运维工作,fabric正式这样一套基于python2的类库,它执行本地或远程shell命令提供了 ...

  8. 在 Ubuntu 上搭建 Hadoop 分布式集群 Eclipse 开发环境

    一直在忙Android FrameWork,终于闲了一点,利用空余时间研究了一下Hadoop,并且在自己和同事的电脑上搭建了分布式集群,现在更新一下blog,分享自己的成果. 一 .环境 1.操作系统 ...

  9. 【Python开发】Python 适合大数据量的处理吗?

    Python 适合大数据量的处理吗? python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 需要澄清两点之后才可以比较全面的看这 ...

随机推荐

  1. C#异步的世界【上】(转)

    新进阶的程序员可能对async.await用得比较多,却对之前的异步了解甚少.本人就是此类,因此打算回顾学习下异步的进化史. 本文主要是回顾async异步模式之前的异步,下篇文章再来重点分析async ...

  2. HTML+CSS学习笔记整理二

    盒子模型CSS(重点) 边框border     边框通常使用连写border:1px(边框大小) solid(实线或其他)  red(颜色) border-collapse:collapse (合并 ...

  3. WMware Workstation Pro安装教程

    [1]右键单击WMware Workstation Pro的可执行文件(.exe),选择以管理员身份运行 [2]点击下一步 [3]勾选我接受许可协议中的条款,点击下一步 [4]点击更改,选择安装位置( ...

  4. Ext.form.Label组件动态设置html值

    解决方法: (1)用的是 Ext.getCmp(id).setText('XXXX')可以动态设置label 显示的文本值,但是文本中有个别数字需要改变颜色显示,需要加样式,这种方法会把加样式的标签( ...

  5. SQL 自动生成序号

    查询出来的数据的编号,不是按照从1开始的有序进行的,界面上显示想显示有序排序 select RANK() OVER(ORDER BY id ) as ID ,* from reconcilet_det ...

  6. 如何简单使用tensorboard展示(二)

    我使用tensorboard继续做了标量展示与直方图展示,在一的基础做了拓展,其改写代码如下: import numpy as npimport tensorflow as tfimport rand ...

  7. Django---CSRF的装饰器,CSRF的流程,JSON数据格式,ajax技术(基于JQ实现)

    Django---CSRF的装饰器,CSRF的流程,JSON数据格式,ajax技术(基于JQ实现) 一丶CSRF相关的装饰器 from django.utils.decorators import m ...

  8. iOS相关

    1. fastlane a collection of tools that help you automate building and releasing iOS and Android apps ...

  9. Qt中QWidget、QDialog和QMainWindow

    QWidget 类是所有用户界面对象的基类.只有一个"页面" QMainWindow 是一个"窗口".含有菜单栏.状态栏.工具栏.停靠窗口.中心窗口 QDial ...

  10. iOS 原生推送(APNS)的实现

    1.前期准备工作 创建你的APNs keys 或者 创建推送证书,这两个创建一个即可实现推送.这两个创建一个即可实现推送.这两个创建一个即可实现推送.重要的事情说三遍,我看评论区有小伙伴误解. 1.  ...