大数据环境部署、开发和应用(hadoop、spark

写了个WORD版本,直接拷过来,格式就不修正了。

部署部分都是根据我自身的操作记录的,可能存在记录不全的问题,需要自己百度。

其他一些是学习的建议,我学的比较快,部署加学习,两星期就搞定了,所以感觉还是靠谱的。

另外,如果是初学者,建议先花一天时间熟悉下hadoop和spark的生态圈

 

大数据环境部署............................................................................................................... 1

一、     部署说明............................................................................................................. 2

二、     前期准备............................................................................................................. 2

三、HADOOP部署.......................................................................................................... 2

a)下载JDK,解压并配置JDK环境............................................................................. 2

b)修改各台机器的主机名.......................................................................................... 3

c)配置MASTER到各SLAVE的无密登录..................................................................... 3

d)安装HADOOP.......................................................................................................... 3

e)创建HADOOP结点................................................................................................. 3

f)修改配置文件.......................................................................................................... 3

g)使用pscp命令将主机上的修改同步到从机........................................................... 5

h)格式化namenode................................................................................................... 6

i)启动hadoop............................................................................................................. 6

j)验证分布式集群...................................................................................................... 6

四、SPARK部署............................................................................................................... 6

a)安装SCALA.............................................................................................................. 6

b)下载SPARK,解压,编辑conf/spark-env.sh文件,加入下面的配置参数............. 7

c)配置slaves文件...................................................................................................... 7

d)        同步配置到从机............................................................................................... 7

e)启动Spark分布式集群并查看信息......................................................................... 7

f)测试SPARK集群...................................................................................................... 7

五、HIVE部署................................................................................................................. 7

a)下载HIVE源码包,最新版自行去官网下载........................................................... 7

b)配置环境变量......................................................................................................... 8

c)安装MYSQL............................................................................................................. 8

d)配置HIVE................................................................................................................ 9

六、SPARKSQL部署....................................................................................................... 12

七、开发环境部署........................................................................................................ 12

八、集群监控................................................................................................................ 12

九、spark rdd................................................................................................................. 13

十、spark streaming....................................................................................................... 13

 

 

 

 

 

一、         部署说明

a)          使用HADOOP分布式管理数据,一台作为主机,三台作为从机,后续再扩展

b)          使用HIVE构建分区外表,与HDFS上的文件做映射

c)          使用SPARKSQL调用HIVE表提升性能

d)          使用SPARK的其他功能,流处理、机器学习、图像处理等,这些内容后续增加

e)          部署SCALA\JAVA\PYTHON开发环境便于管理和实现功能

二、                                                                   前期准备

a)          四台性能稍高的机器,磁盘500G,CPU4核32G(目前测试环境没有按照这个配置)

b)          使用CENTOS6.8 DVD版本制作启动盘并按照系统

c)          系统启动后进入图形界面配置网络(刚开始先在外网环境部署)

d)          永久关闭防火墙chkconfigiptables off

e)          安装一些库 yum install  lrzszopenssh-server

f)           安装pssh,下载压缩包编译安装即可。

g)          上面在机房操作,后续可以回到工位用XSHELL进行连接;也可以安装VNC控制图形界面,一般不需要

三、         HADOOP部署

注:hadoop shell需要掌握,http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

a)下载JDK,解压并配置JDK环境

编译 vim /etc/profile

JAVA_HOME=/root/software/jdk1.8.0_111

JRE_HOME=/root/software/jdk1.8.0_111/jre

PATH=$JAVA_HOME/bin:$PATH:JRE_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export JAVA_HOME JRE_HOME PATH CLASSPATH

生效 source /etc/profile

b)修改各台机器的主机名

vim /etc/sysconfig/network 修改HOSTNAME

vim /etc/hosts 配置如下

*.*.*.180 Master.Hadoop

*.*.*.182 Slave1.Hadoop

*.*.*.183 Slave2.Hadoop

*.*.*.184     ave3.Hadoop

c)配置MASTER到各SLAVE的无密登录

ssh-keygen -t rsa

scp /root/.ssh/id_rsa.pub root@Slave1.Hadoop:/home

cat /home/id_rsa.pub >> /root/.ssh/authorized_keys

chmod 600 authorized_keys

d)安装HADOOP

下载并解压

添加HADOOP环境变量

编辑 vim /etc/profile

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

export HADOOP_HOME=/usr/local/hadoop

生效 source /etc/profile

e)创建HADOOP结点

在各台机器的HADOOP目录下创建tmpdfsdfs/data dfs/name

f)修改配置文件

vim hadoop-env.sh 指定JAVA_HOME

vim yarn-env.sh 指定JAVA_HOME

vim mapred-env.sh 指定JAVA_HOME

配置slaves文件

添加从节点的机器名

修改core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://Master.Hadoop:9000/</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/tmp</value>

<description>Abase for other temporary directories. </description>

</property>

</configuration>

 

修改hdfs-site.xml

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>/usr/local/hadoop/dfs/name</value>

</property>

/*配置datanode的数据存储目录*/

<property>

<name>dfs.datanode.data.dir</name>

<value>/usr/local/hadoop/dfs/data</value>

</property>

/*配置副本数*/

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>

 

修改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>

<property>

<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>Master.Hadoop:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>Master.Hadoop:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>Master.Hadoop:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>Master.Hadoop:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>Master.Hadoop:8088</value>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>2048</value>

</property>

<property>

<name>yarn.nodemanager.resource.cpu-vcores</name>

<value>1</value>

</property>

</configuration>

g)使用pscp命令将主机上的修改同步到从机

命令格式:pscp -h host.txt 本机路径远程路径

Host.txt为从机的主机名

其中将/etc/profile传过去后需要source /etc/profile生效

h)格式化namenode

hadoopnamenode -format

i)启动hadoop

sbin/start-all.sh

查看是否配置和启动成功

主机上jps

9555 Jps

8405 ResourceManager

8006 NameNode

8221 SecondaryNameNode

从机上jps

24728 NodeManager

24606 DataNode

25423 Jps

可以去MASTER:8088上查看运行情况

j)验证分布式集群

在hdfs文件系统上创建两个目录

hadoop fs -mkdir -p /data/wordcount

hadoop fs -mkdir -p /output

上传一个文本文件

hadoop fs -put xxx.txt /data/wordcount

执行自带的WORDCOUNT例子

hadoop ***examples***.jar wordcount /data/wordcount/ /output/wordcount

四、SPARK部署

a)安装SCALA

Vim /etc/profile

export SCALA_HOME=/home/chengxu/scala-2.10.4/scala-2.10.4

export PATH=${SCALA_HOME}/bin:$PATH

source /etc/profile

b)下载SPARK,解压,编辑conf/spark-env.sh文件,加入下面的配置参数

export SCALA_HOME=/path/to/scala-2.10.4

export SPARK_WORKER_MEMORY=7g

export SPARK_MASTER_IP=172.16.0.140

export MASTER=spark://172.16.0.140:7077

c)配置slaves文件

Slave1

Slave2

Slave3

Slave4

Slave5

d)同步配置到从机

e)启动Spark分布式集群并查看信息

Start-all.sh并jps查看信息:

-bash-4.1# jps

23526 Jps

2127 Master

7396 NameNode

7594 SecondaryNameNode

7681  ourceManager

f)测试SPARK集群

通过SPARK-SHELL读取hdfs文件,并计算单词个数,细节不再赘述

五、HIVE部署

a)下载HIVE源码包,最新版自行去官网下载

wgethttp://mirrors.cnnic.cn/apache/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz

tar -zxf apache-hive-1.2.1-bin.tar.gz -C /usr/local

b)配置环境变量

Vi /etc/profile

HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin

PATH=$PATH:$HIVE_HOME/bin

export HIVE_NAME PATH

source /etc/profile

c)安装MYSQL

                         i.              安装依赖包

yum install gccgcc-c++ ncurses-devel  -y

                       ii.              安装cmake

# wget http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz

# tar zxvf cmake-2.8.12.tar.gz

# cd cmake-2.8.12

# ./bootstrap

# make && make install

                      iii.              创建用户的相应目录

# groupaddmysql

# useradd -g mysqlmysql

# mkdir -p /data/mysql/

# mkdir -p /data/mysql/data/

# mkdir -p /data/mysql/log/

                      iv.              获取mysql安装包并安装

# wget http://dev.mysql.com/get/downloads/mysql/mysql-5.6.25.tar.gz

# tar zxvf mysql-5.6.25.tar.gz

# cd mysql-5.6.25

# cmake \

-DCMAKE_INSTALL_PREFIX=/data/mysql \

-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DMYSQL_DATADIR=/data/mysql/data \

-DMYSQL_TCP_PORT=3306 \

-DENABLE_DOWNLOADS=1

如果报错找不到CMakeCache.txt则说明没安装ncurses-devel

# make && make install

                       v.              修改目录权限

# chmod +w /data/mysql/

# chown -R mysql:mysql /data/mysql/

# ln -s /data/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

# ln -s /data/mysql/mysql.sock /tmp/mysql.sock

                      vi.              初始化数据库

# cp /data/mysql/support-files/my-default.cnf /etc/my.cnf

# cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld

# /data/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/data/mysql --datadir=/data/mysql/data

                    vii.              启动mysql服务

# chmod +x /etc/init.d/mysqld

# service mysqld start

#ln –s /data/mysql/bin/mysql /usr/bin/

                   viii.              初始化密码

修改MySQL的配置文件(默认为/etc/my.cnf),在[mysqld]下添加一行skip-grant-tables

重启mysql

再次进入MySQL命令行mysql -uroot -p,输入密码时直接回车,就会进入MySQL数据库了,这个时候按照常规流程修改root密码即可

密码修改完毕后,删掉配置文件中的那行,并且重启MySQL服务,新密码就生效了

                      ix.              创建hive数据库

mysql>create database hive;

d)配置HIVE

                       x.              修改配置文件

进入到hive的配置文件目录下,找到hive-default.xml.template,cp份为hive-default.xml

另创建hive-site.xml并添加参数

<configuration>

       <property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://Master.Hadoop:3306/hive?createDatabaseIfNotExist=true</value>

<description>JDBC connect string for a JDBC metastore</description>

       </property>

       <property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

<description>Driver class name for a JDBC metastore</description>

       </property>

 

       <property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

<description>username to use against metastore database</description>

       </property>

       <property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>123456</value>

<description>password to use against metastore database</description>

       </property>

       <property>

       <name>hive.metastore.schema.verification</name>

       <value>false</value>

       <description>

    Enforce metastore schema version consistency. 

    True: Verify that version information stored in metastore matches with one from Hive jars.  Also disable automatic 

          schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures 

          proper metastore schema migration. (Default) 

    False: Warn if the version information stored in metastore doesn't match with one from in Hive jars. 

       </description>

       </property>

<property>

<name>datanucleus.fixedDatastore</name>

<value>false</value>

</property>

 

<property>

<name>datanucleus.autoCreateSchema</name>

<value>true</value>

</property>

 

<property>

<name>datanucleus.autoCreateTables</name>

<value>true</value>

</property>

 

<property>

<name>datanucleus.autoCreateColumns</name>

<value>true</value>

</property>

</configuration>

                      xi.              JDBC下载

wgethttp://cdn.mysql.com/Downloads/Connector-J/mysql-connector-java-5.1.36.tar.gz

cp mysql-connector-java-5.1.33-bin.jar apache-hive-1.2.1-bin/lib/

                    xii.              Hive客户端配置

拷贝/etc/profile和hive到从机

修改hive-site.xml

<configuration>

<property>

              <name>hive.metastore.uris</name>

       <value>thrift://hadoop-master:9083</value>

       </property>

</configuration>

                   xiii.              Hive启动

hive --service metastore&

这个终端不能关闭

[hadoop@hadoop-master~]$jps

10288 RunJar  #多了一个进程

9365 NameNode

9670 SecondaryNameNode

11096 Jps

9944 NodeManager

9838 ResourceManager

9471 DataNode

                   xiv.              Hive服务器端访问

执行hive进入HIVE模式并创建hive数据库

创建测试文本test_20170120.txt

数据内容为:

why$99

zpp$100

将该文本文件上传到HDFS

创建分区外表

[root@Masterlocal]# hive -e "use fmrt;

> create external table hivetest(

> name string,

> age int

> )partitioned by(day_p string)

> row format delimited fields terminated by '$'

> STORED AS TEXTFILE;"

映射HDFS文件

alter table hivetest add partition(day_p='20170120') location '/data/20170120';

查询表

hive> select * from hivetest;

OK

why 99   20170120

zpp  100 20170120

Time taken: 0.105 seconds, Fetched: 2 row(s)

                    xv.              Hive客户端访问

使用hive命令登录并查询

                   xvi.              HIVE分区的使用

http://www.cnblogs.com/lovelanglangyou/p/5534296.html

一般使用分区外表

六、SPARKSQL部署

       在spark/conf目录下创建hive-site.xml文件,内容如下:

       <configuration>

     <property>

    <name>hive.metastore.uris</name>

    <value>thrift://Master.Hadoop:9083</value>

    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>

     </property>

</configuration>

七、开发环境部署

PYTHON环境:

下载python3.5源码,安装前需要先安装这些库

yum install zlib-devel openssl-devel

否则安装的时候,pip3会无法安装

然后编译安装源码即可

https://www.zhihu.com/question/30279880这是出错的一些处理

最近特别迷jupyter,贼好用,远程访问的配置方法如下:

http://www.cnblogs.com/zhanglianbo/p/6109939.html

Scala环境:

建议使用SBT,具体步骤网上搜索,此处省略

八、集群监控

Hadoop监控页面

http://*.*.*.180:8088/cluster

spark监控页面

http://*.*.*.180:8080/

具体监控页面上去多点点,多看看就行。

此处只是开个头,具体需要到网上再找文章深入学习

 

 

 

九、spark rdd

参考官网http://spark.apache.org/docs/latest/programming-guide.html

不懂的地方再找中文更详细的例子

不需要一次性记住,多写写代码,自然就会记住一些常用的。

其他一些不用记住,熟悉即可,后续知道哪里去查就行

我写了一些使用的例子,设计到基本的算子操作,spark_sql操作等等

代码路径在Master /root/code:

Study.py

Spark python API需要一定的掌握 https://www.iteblog.com/archives/1395.html

孰能生巧,多写写代码

十、spark streaming

官网学习http://spark.apache.org/docs/latest/streaming-programming-guide.html

然后部署flume和kafaka

Zookeeper集群配置

Kafka集群配置

使用python模拟kafka生产者传递数据

编写sparkstreaming 代码作为kafka接受者

这方面涉及很多概念,如果英文读起来吃力,可查找中文资料

我写了一个例子,代码在Master结点的/root/code下:

kafkaProducer.py userBehaviorMsgProducer.py webPagePopularityValueCalculator.py

spark实时处理的典型例子是日志系统,《基于FlumeKafkaSpark-的分布式日志流处理系统的设计与实现》对此有非常好的介绍;

高彦杰的《spark 大数据分析实践》里面有详细的配置和应用说明;

下面是知乎上的一些看法:

https://www.zhihu.com/question/36688175/answer/68692597

目前MASTER上的例子,我参考了如下内容进行部署和代码测试:

https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice2/

里面用的scala语言,我改成了python,语法参考如下:

http://blog.csdn.net/chuliuxiangjiao/article/details/46838545

里面用到了updateStateByKey原语,具体用法参考官网:

http://spark.apache.org/docs/latest/streaming-programming-guide.html

 

 

 

 

 

 

 

---------------------------------------------------我是分割线--------------------------------------------------

附:着重说明!!!!

Spark官网得全部看完

IBM developerWorks的文章很好,多搜搜

查看文献是提升能力的重要方式,我下载了部分文献可供参考

Spark自带的代码都需要看一遍,在MASTER上我改了很多内容

 

 

Spark 机器学习 MLLib放在《机器学习开发与应用》内一并介绍

SPARK GraphX 由于暂时不支持PYTHON,所以还未学习

 

posted on 2017-05-15 10:52  Kernel_wu  阅读(441)  评论(0编辑  收藏  举报

导航