花了299在天善学院买了玩转大数据分析的教程。虽然名字是一分钟建立,但那仅仅是在centos单机上安装spark,离建立hadoop、spark、hive三位一体的集群环境差距还不是一点点。下面记录的是通过vagrant建立虚拟机,安装这三位大佬的过程。ffftest安装spark环境的步骤如下:
---------------1、下载vagrant和virtualbox,两者用于建立centos7虚拟机。vagrant建立虚拟的优势在Windows环境下,使用powershell作为命令行工具。命令如下:vagrant init centos/7vagrant up 第一次将下载centossudo yum updatesudo yum install java-1.8.0-openjdkcurl -O spark的下载地址tar zxvfbin/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 yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys在master机第一次通过密码登录,然后ssh-copy-id -i ~/.ssh/id_rsa.pub 将master机的rsa.pub复制到目标机的authorized_keys。参考http://www.jb51.net/article/94599.htm3、启动 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 -nlopthttp://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模式):設定 Slaves vi /usr/local/spark/conf/slaves 查看slaves$SPARK_HOME/sbin/start-all.shpyspark --master spark://10.211.55.100:7077http://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的语法,封装了底层的MapReduceHive安装模式:embeddedmetastore、local mode、**remote mode**安装Hive -remote Mode 步驟:1.安裝mySQL,mySQLconnectorsystemctlstart mysqld(开启mysql)cat /var/log/mysqld.log | grep password(查询密码,以便登录)mysql-u root -p(使用查询到的密码登录)ALTER USER 'root'@'localhost' IDENTIFIED BY '!Spark123';(修改密码)2.設定 hive-site.xmlvi /usr/local/hive/conf/hive-site.xml 修改刚刚确定的密码3.初始化mySQLschematool-initSchema -dbTypemysql根据hive-site.xml的设置找到mysql的位置,初始化mysqlmysql-u root -p登录 show databases 显示数据库 usemetastore; show tables重要的table:DBS 新开的database的信息;DB_PRIVS 使用者权限;PARTITIONS方便Hive快速提取;TBLS新创的表格4.啟動Hive的metastorehive --servicemetastore没有退出ctrl+c后执行下局**(如果进入hive失败,改为:hive --servicemetastore&)**nohuphive --servicemetastore&head nohup.out 查看日志,已经开启metastroenetstat-nlopt查看metastore的端口,存在9083表示开启hive 进入hive环境。(语句加分号)show tables 查看表格;show databases 查看数据库create database temp;use temp;create table test1(id string,numberint);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 --servicemetastore&没有开启****建立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] 使用本地模式快速开启sparkspark.sql('show databases').collect()spark.sql('select * from test1').show() 注意:test1在使用时没有use temp(databases)所以这里没有from temp.test1**建立交互式Pyspark环境
--------------ipythonNotebook 简介• 以 Web 的方式提供使用者操作 Python• 可以远端操作 Server 上的资料及环境• 提供基本 code completion,提示等功能安装过程:pip installipythonnotebook 安裝ipythonnotebook (ipythonnotebook对root模式排斥)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 •将资料从 Hdfs 传到本机: hadoop fs -get •将资料在 Hdfs 中移动: hadoop fs -mv •删除 Hdfs 资料: hadoop fs -rm •观察档案内容: hadoop fs -cat/-tail 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
网友评论