构建Spark环境

构建spark

标签:大数据

花了299在天善学院买了玩转大数据分析的教程。虽然名字是一分钟建立,但那仅仅是在centos单机上安装spark,离建立hadoop、spark、hive三位一体的集群环境差距还不是一点点。下面记录的是通过vagrant建立虚拟机,安装这三位大佬的过程。

单机安装spark环境的步骤如下:

下载vagrant和virtualbox,两者用于建立centos7虚拟机。
vagrant建立虚拟的优势
在Windows环境下,使用powershell作为命令行工具。
命令如下:
vagrant init centos/7
vagrant up 第一次将下载centos
sudo yum update
sudo yum install java-1.8.0-openjdk
curl -O spark的下载地址
tar zxvf
bin/pyspark 即可运行spark
例子: rdd=sc.parallelize([1,2,3,4,5])
rdd.map(lambda x:x+1).reduce(lambda x,y:x+y) –>20

查看ip需要先:sudo yum install net-tools
安装集群,修改vagrantfile即可,可方便的获得虚拟机集群

建立Hadoop环境:

  1. 下载Hadoop、Hive、Spark相应版本的文件,将相关命令(yum update等)写入bootstrap.sh执行,具体包括:yum update、yum java,sshkey,tar,mv,cp文件等,修改文件路径等。
    在bootstrap.sh中,自作聪明的将/vagrant/files/等路径的vagrant删掉了,以为对应windows下的files目录,实际上vagrant的工作方式是将windows下.vagrant路径映射到虚拟机的/vagrant/目录下。试图通过将bootstraop.sh复制到虚拟机运行,可实际上少了./vagrant的映射,不能运行成功,只有重新删掉up。
  2. 设定 ssh key
    • 将master的 id_rsa.pub 复制到其他机器的 ~/.ssh/authorized_keys/
    注意:这里花了一点时间,多次将集群彻底删除重装,私钥不能删除,删除了就连vagrant也访问不了node了
    公钥验证不通过,需要在要登录的机器(./etc/ssh/sshd_config) RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    在master机第一次通过密码登录,然后ssh-copy-id -i ~/.ssh/id_rsa.pub <romte_ip>将master机的rsa.pub复制到目标机的authorized_keys。参考http://www.jb51.net/article/94599.htm
  3. 启动 Hadoop
    • hdfs namenode -format 建立hdfs文件夹
    • $HADOOP_PREFIX/sbin/start-dfs.sh 开启dfs,登录各个node验证
    hdfs dfsadmin -report 显示各node的使用情况
    • $HADOOP_PREFIX/sbin/start-yarn.sh
    查看hadoop开启的port:netstat -nlopt
    http://10.211.55.100:50070/ 在web端查看hadoop启动情况

建立Spark集群

开启spark前应开启hadoop,因为多次hdfs namenode -format导致namespaceID不同(所以一旦format,就不应重复,否则因为删除datanode会丢失数据),

Configured Capacity: 0 (0 B)  
Present Capacity: 0 (0 B)  
DFS Remaining: 0 (0 B)  
DFS Used: 0 (0 B)  
DFS Used%: NaN% 

解决方法是:删掉所有节点/var/hadoop目录下的hadoop-datanode和hadoop-namenode两个文件夹。

spark configconfiguration:
spark-env.sh (设定环境变项)
spark-defaults.conf (细节设定)
启动spark(standalone模式):

  1. 設定 Slaves vi /usr/local/spark/conf/slaves 查看slaves
  2. $SPARK_HOME/sbin/start-all.sh

pyspark –master spark://10.211.55.100:7077
http://10.211.55.100:8080/ 在web端查看
在执行上局的时候,报错java.io.FileNotFoundException: File does not exist: hdfs:/user/spark,经过思考,应该是hdfs系统没有这个文件夹,那么使用 hadoop fs -mkdir /user/spark建立这个文件夹。解决!

建立Hive(Hadoop上的资料管理系统)

Hive是Hadoop家族中一款数据仓库产品,
Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce
Hive安装模式:embedded metastore、local mode、remote mode
安装Hive -remote Mode 步驟:

  1. 安裝 mySQL, mySQL connector
    systemctl start mysqld(开启mysql)
    cat /var/log/mysqld.log | grep password(查询密码,以便登录)
    mysql -u root -p(使用查询到的密码登录)
    ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘!Spark123’;(修改密码)
  2. 設定 hive-site.xml
    vi /usr/local/hive/conf/hive-site.xml 修改刚刚确定的密码
  3. 初始化 mySQL
    schematool -initSchema -dbType mysql 根据hive-site.xml的设置找到mysql的位置,初始化mysql
    mysql -u root -p登录 show databases 显示数据库 use metastore; show tables
    重要的table:DBS 新开的database的信息;DB_PRIVS 使用者权限;PARTITIONS方便Hive快速提取;TBLS新创的表格
  4. 啟動Hive的 metastore
    hive –service metastore 没有退出ctrl+c后执行下局(如果进入hive失败,改为:hive –service metastore &)
    nohup hive –service metastore &
    head nohup.out 查看日志,已经开启metastroe
    netstat -nlopt 查看metastore的端口,存在9083表示开启
    hive 进入hive环境。(语句加分号)show tables 查看表格;show databases 查看数据库
    create database temp;
    use temp;
    create table test1(id string,number int);
    insert into table test1 VALUES(‘001’,1),(‘002’,2);
    select * from test1
    insert时总是失败,报错FAILED: SemanticException [Error 10293]: Unable to create temp file for insert values File。第二天重做了一遍hadoop,spark,正常运行,估计是因为hive –service metastore &没有开启

建立spark与hive的连接,使用spark.sql运行hive语句
ln -s /usr/local/hive/conf/hive-site.xml /usr/local/spark/conf 在spark的conf下建立hive-site.xml的软链接(link)。
pyspark –master local[1] 使用本地模式快速开启spark
spark.sql(‘show databases’).collect()
spark.sql(‘select * from test1’).show() 注意:test1在使用时没有use temp(databases)所以这里没有from temp.test1

建立交互式Pyspark环境

ipython Notebook 简介

  • 以 Web 的方式提供使用者操作 Python
  • 可以远端操作 Server 上的资料及环境
  • 提供基本 code completion,提示等功能
    安装过程:
  1. pip install ipython notebook 安裝 ipython notebook (ipython notebook对root模式排斥)
  2. cp /vagrant/conf/spark/0_spark.py ~/.ipython/profile_default/startup/ 將設定檔放入

ipython notebook –ip 0.0.0.0 启动ipython复制出现的网址到浏览器-0.0.0.0改为master的ip(或者直接填写master ip)

Hadoop常用命令:
•   管理UI: http://10.211.55.100:50070
•   列出档案: hadoop fs -ls /
•   建立资料夹: hadoop fs -mkdir
•   将资料上传到 Hdfs:  hadoop fs -put <source> <dest>
•   将资料从 Hdfs 传到本机: hadoop fs -get <remote> <local> 
•   将资料在 Hdfs 中移动: hadoop fs -mv <source> <dest>
•   删除 Hdfs 资料: hadoop fs -rm <file>
•   观察档案内容: hadoop fs -cat/-tail <file>
vagrant常用命令
•   init 建立 Vagrant File
•   up 建立虚拟机(或开机)
•   ssh 进入虚拟机
•   status 观察虚拟机状态
•   halt 关机
•   destroy 删除虚拟机
•   suspend 暂停虚拟机(类似休眠)
•   resume 唤醒虚拟机
ipython notebook 一般操作方式
•   Enter: 进入编辑此格内容(编辑模式)
•   Esc: 从编辑模式回到命令模式
•   Shift + Enter: 运行此格,并跳至下一格
•   Alt + Enter: 运行此格,并在下方新增一格
•   Ctrl + Enter: 运行此格
•   Y: 切换成 Code 模式(在命令模式下)
•   M: 切换成 Markdown模式(在命令模式下)
•   上下方向键: 上下移动选择格
•   Command + s (for Mac): 储存档案
•   Ctrl + s (for window): 储存档案
•   %matplotlib inline
•   %%timeit 测试时间
•   %history 历史纪录
•   !执行 shell command
    原文作者:macroliao
    原文地址: https://www.jianshu.com/p/147eef50160f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞