延云YDBYA100安装部署文档
YDB:實時在線分析(OLAP)系統:是我們自主研發的一個大型分布式索引系統。旨在為數據總量為萬億級別、每天千億級別數據增量的項目提供近似實時的數據導入,并提供近似實時響應的多維查詢與統計服務。
Ya100:大數據加速器:Spark SQL的一種新的存儲格式。 Ya100比Parquet格式快5~100倍.任意維度組合,過濾,萬億數據秒級響應。Ya100內嵌ydb可以通過kafka進行數據的實時導入。
依賴的硬件配置
一、延云YDB最低配置
1.內存:16G
2.磁盤:至少2塊獨立的物理硬盤,數據盤與操作系統盤分離。
3.CPU:至少8線程(1顆,4核,8線程)
二、如下場景,延云將不再提供安裝技術支持
1.低于最低配置要求的用戶。
2.虛擬機用戶:hadoop在虛擬機中執行效率很低。
3.32位系統的用戶:這類系統最大只有4G內存。
三、延云YDB推薦配置
1.機器內存:128G
2.磁盤:2T*12的磁盤
3.CPU:24線程(2顆,12核,24線程)
YDB依賴的軟件環境(需用戶自行安裝)
1.操作系統
Centos 6.x 64bit
不推薦過老或過新的操作系統,諸多hadoop廠商的發行版在過老或過新的系統上有問題。
2.Java
JDK1.7及以上版本
3.Hadoop
2.0以上版本,需要支持yarn
4.Zookeeper
? ?zookeeper-3.4.5及以上版本
4.Spark版本
1.6.x系列,推薦1.6.1版本。之前的版本運行不了。
Spark只需要編譯好的安裝包,放到指定磁盤目錄即可,您無需安裝與部署。
如果您的Hadoop版本交特殊:可以下載spark源碼進行編譯,編譯命令如下
export JAVA_HOME=/install/jdk
export PATH=$JAVA_HOME/bin:$PATH
export MAVEN_OPTS="-Xmx3g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m“
build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.1 -Phive -Phive-thriftserver -DskipTests -Dmaven.test.skip=true clean package
##################################################
操作系統:基本可用性檢查
1.ulimit –n 檢查是否是65535而不是默認的1024
??? 否則執行如下三步配置ulimit
??? 第一步:執行 ulimit -n 65535
??? 第二步:編輯/etc/security/limits.conf最后增加如下兩行記錄
??? ???*softnofile 65535
??? ??? * hard nofile 65535
??? 第三步:編輯/etc/security/limits.d/90-nproc.conf
?????? ?? 將其中的1024也修改為65535
2.確定多臺機器之間的時鐘時間是否同步,建議配置ntp服務
3.防火墻是否關閉
????? iptables–F以及通過setup\services等服務里將防火墻關閉
4.Swap是否關閉
??? Swap會對系統的穩定性帶來較大影響,一般hadoop生態圈均禁用swap,禁用方法為執行
??? swapoff-a
5.檢查/proc/sys/vm/overcommit_memory的配置值
??? 如果為2,建議修改為0,否則有可能會出現,明明機器可用物理內存很多,但jvm確申請不了內存的情況。
6.檢查語言環境是否UTF8
??? 否則 配置 exportLANG=zh_CN.UTF-8這個環境變量
7.10000端口是否被占用
???? 由于ya100對外的jdbc的服務端口為10000,需要先通過netstat –npl|grep 10000看看是否有進程已經占用了改端口,如果有,相關服務要先停掉后才能啟動ya100,典型場景是,先前這臺機器已經啟動了別的spark或hive服務,占用了10000端口
依賴的軟件:基本可用性檢查
1.HDFS檢查
????? 打開50070端口,檢查hdfs是否啟動成功,存儲空間分配的是否正確
??? 第一:確保hdfs安裝成功,一定要手工通過hadoop–put命令,上傳一個文件試一試。
??? 第二:確保將來準備分配給YDB的hdfs目錄有讀寫權限,建議第一次新手安裝,取消hdfs的權限驗證,配置dfs.permissions.enabled為false,并重啟集群
??? 第三:一定要確保dfs.datanode.data.dir的目錄配置的是所有的數據盤,而不是配給了系統盤
系統盤一定要與數據盤分離,否則磁盤特別繁忙的時候會造成操作系統很繁忙,zk之類的容易掛掉。
2.YARN檢查
??? 打開8088,檢查yarn是否啟動成功,VCoresTotal \Memory Total 分配的是否正確。經常有朋友忘記更改yarn的默認配置導致一臺128G內存的機器最多只能啟動2個進程,只能使用8G內存。
??? 第一:yarn.nodemanager.resource.memory-mb用于配置Yarn當前機器的可用內存,通常配置當前機器剩余可用內存的80%.
??? 第二:yarn.scheduler.minimum-allocation-mb為一個Yarn container申請內存的最小計費單位,建議調小一些,如128,讓計費更精準.
??? 第三:yarn.scheduler.maximum-allocation-mb為一個Yarn container可以申請最大的內存,建議調整為32768(不一定真用到這些).
??? 第四:yarn.nodemanager.resource.cpu-vcores當前機器可以啟動的Yarn container的數量,建議配置為當前機器的cpu的線程數?如24個。
??? 第五:yarn.nodemanager.pmem-check-enabled與yarn.nodemanager.vmem-check-enabled一定要都配置成false,因為1.6版本的spark有BUG,會使用較多的堆外內存,yarn會kill掉相關container,造成服務的不穩定。
??? 第六:mapreduce.application.classpath里面的值是否有配置的jar包并不存在,典型的情況下是找不到lzo的包(許多廠商的安裝部署會配置該參數),如果有的jar包找不到,建議注釋掉相關依賴,否則可能會造成ydb啟動失敗;
??? 如默認的hdp集群就要將其中的lzo的配置給注釋掉/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar;
3.Zookeeper檢查
??? 第一:要探測zookeeper的2181端口是否啟動 可以通過netstat –npl|grep2181來查看
??? 第二:zookeeper的數據目錄別與hdfs的數據盤放在一起,盡量獨立一個磁盤,或者放在系統盤,否則數據盤特別繁忙的時候zookeeper本身非常容易掛掉
??? 第三:zookeeper的日志清理要打開,否則會出現系統運行幾個月后,zookeeper所在的磁盤硬盤變滿的情況,將zoo.cfg里的這兩個配置項注釋開即可:
??? ???autopurge.purgeInterval=24
??? ???autopurge.snapRetainCount=30
##################################################
開始部署延云YDB
第一:去延云的官方下載最新的穩定版的YDBhttp://ycloud.net.cn/yyydb
第二:將YDB上傳到服務器上,并解壓
第三:配置conf目錄下的ya100_env.sh環境變量
??? 1.基本環境配置
??? ???export HADOOP_CONF_DIR=/etc/hadoop/conf
??? ???export HADOOP_HOME=/usr/hdp/current/hadoop-client
??? ???export JAVA_HOME=/usr/jdk64/jdk1.8.0_60
??? ???exportSPARK_HOME=/root/software/spark-1.6.1
??? ???注意:配置過后大家一定要手工驗證下,相關目錄的配置文件是否真的存在
??? 2.配置內存與啟動的并發數
??? ???#為啟動的進程數量,切記不要超過yarn總的vcores的數量-1,建議每臺機器配置cpu線程數的一半,如12個;
??? ???#如果有3臺機器,每臺機器配置12個的話那么下面這項的值要寫36,不要只寫12
??? ???export YA100_EXECUTORS=12
??? ???#啟動的進程,每個給分配多少內存
??? ???#YA100_EXECUTORS*YA100_MEMORY的大小建議為yarn總內存的3/5(剩下的留給操作系統)
??? ???#關于內存控制參數的詳細說明,請閱讀example下的《3.大家需要了解的幾個內存控制的參數.txt》說明
??? ???export YA100_MEMORY=2500m
??? ???#每個進程內啟動的線程數,一般不需要修改
??? ???export YA100_CORES=2
??? ???#ya100接口程序分配的內存,建議2000m以上
??? ???export YA100_DRIVER_MEMORY=3000m
第四:配置conf目錄下的ydb_site.yaml環境變量
??? 該文件的配置非常容易出錯,要注意如下幾點:
??? 1.文件格式必須為utf8格式,切記切記
??? 2.每個配置項的開頭必須有個空格,而不tab
??? 3.配置文件中別出現tab
??? 4.注意每個KEY: VALUE之間是有一個空格的,如果value是字符串類型,要用雙引號括起來
??? 配置項說明如下:
??? 1.配置Ydb的存儲路徑的配置ydb.hdfs.path
??? ??????注意ydb的存儲路徑與ya100的存儲路徑不是一個,要分別配置成不同的路徑,不能重復
??? ??????ya100的默認存儲路徑在conf目錄下的hive-site.xml中的hive.metastore.warehouse.dir
??? ??????Ya100的每張表的存儲路徑也可以再創建表的時候由location來指定。
???2.配置Ydb在實時導入過程中,所使用的臨時目錄ydb.reader.rawdata.hdfs.path
??? 3.配置ydb httpui服務的端口ydb.httpserver.port默認為1210
??? 4.配置ydb依賴的zookeeper的地址
??? ????storm.zookeeper.servers:
?????? ????????- "192.168.1.10"
???????storm.zookeeper.root: "/ycloud/ydb“
第五:其他ya100/conf目錄下的配置文件的說明
??? 1. hive-site.xml hive 表的配置,如果想要更改 hive 的一些配置,如將 hive 的元數據寫入到數據庫里,可修改此文件。 ??? 2. spark- defaults.conf 用于配置 spark ,如果需要修改 spark 的默認調度規則,可以修改此配置。 ??? 3. init.sql 為 ya100 啟動時候的初始化方法,如果我們的業務需要自定義 UDF ,可以考慮將自定義 UDF 語句放到這里,通過 init.sh 來執行 ??? 4. driver.log.properties 為接口程序的 log4j 的配置,默認日志記錄在 logs 目錄下 ??? 5. worker.log.properties 為 ya100 的工作進程的 log4j 的配置,默認記錄在每臺機器的 yarn 的工作目錄下。服務的啟動與檢查
??? 進入bin目錄,執行chmoda+x *.sh
第一:啟動spark
??? ./start.sh
第二:spark 服務檢查:
??? 1.tail? -f../logs/ya100.log 看是否有報錯,當出現如下的日志,表示啟動成功
??? 2.打開yarn的8088頁面,看啟動的container數量以及內存的時候是否正確
?
? 3.看下面是否有ya100 on spark的任務,點擊對應的applicationMaster看是否能打開spark的ui頁面
第三:啟動ydb
??? ./init.sh
第四:YDB服務檢查
??? 1.通過瀏覽器打開:1210頁面,看是否能打開
??? 2.點開“work工作進程列表”看啟動的worker數量是否與在ya100_env.sh里配置的YA100_EXECUTORS數量一致
第五:服務的停止
??? ./stop.sh
##################################################
了解延云ya100、ydb的用法、進行測試、生成演示demo
??? 打開ya100/example目錄
第一: ya100_example.sql
??? 包含了 ya100的基本表的創建,查詢的使用,數據的導入等。
第二: ydb_example.sql
??? 包含了ydb的表的創建,ya100與ydb表的連接,查詢的使用,數據的導入等
第三:如何通過kafka實時導入數據.txt
??? 闡述了Ydb如何通過kafka實時的進行數據導入
第四:”標準性能測試.txt ”
??? 給出了如何用ya100自帶的25個用例進行性能比較測試以及標準的tcp-h測試方法
第五:”演示demo搭建.txt”
??? 如何快速的使用ydb生成延云官方提供的演示demo
Ya100與ydb的四種使用方法
1.命令行操作
??? cd bin
??? ./conn.sh 直接數據命令
??? ./conn.sh -f xxx.sql來執行一個文件里的全部的SQL
2.通過jdbc來連接
??? Class.forName("org.apache.hive.jdbc.HiveDriver");
??? Connection conn = DriverManager.getConnection("jdbc:hive2://101.200.130.48:10000/default","ycloud","");
??? Statement smst = conn.createStatement();
??? smst.executeQuery("setya100.spark.filter.tg_2k1v_ly_ya100=;");
??? smst.executeQuery("setya100.spark.combine.tg_2k1v_ly_ya100=*;");
??? smst.executeQuery("setya100.spark.top10000.tg_2k1v_ly_ya100=;");
??? ResultSetrs =smst.executeQuery("selectYcount('*',ya100_pipe) from tg_2k1v_ly_ya100?limit 300");
??? while (rs.next()){
??? ???for (int i = 0; i < columnNum;i++) {
??? ???objArray[i]=rs.getObject(i +1);
??? }
??? rs.close();
??? smst.close();
??? conn.close();
3. 舊版YDB接口(為兼容而保留)
??? http://192.168.112.129:8080/sql?sql=selectindexnum,label fromydbexample whereydbpartion=‘20151011’ limit 0,100
4.新版web接口
??? http://192.168.112.129:8080/sparksql?sql=set+ya100.spark.filter.tg_2k1v_ly_ya100%3D%3B+set+ya100.spark.combine.tg_2k1v_ly_ya100%3D*%3B+set+ya100.spark.top10000.tg_2k1v_ly_ya100%3D%3Bselect+indexnum%2Clabel+from+ydbexample+where+ydbpartion%3D%E2%80%9820151011%E2%80%99+limit+100
常見問題FAQ
1.是否在同一個yarn環境下混搭多個不同的環境?
??? 延云產品跟其他對性能要求較高的系統如Hbase一樣。雖然支持混搭,但不建議這樣做。
??? 通常來說為了避免相互之間造成較嚴重的影響,一般都是獨立的集群。
2.是否可以在虛擬機下運行
? 延云產品可以運行在虛擬機下,但是由于hadoop運行在虛擬機中性能損耗較大,所以延云跟大數據生態圈中的其他產品一樣,真正的生產環境并不推薦使用虛擬機。
3.出現Container released on a *lost* node后服務就掛了
? 需要先檢查下磁盤的使用率是否超過90%,默認yarn會為每臺機器保留10%的空間,如果剩余空間較少,yarn就會停掉這些機器上的進程。
4.使用Ya100在進行數據導入的時候,或者進行一些復雜較大的查詢時其他查詢會卡主。
??? 默認ya100使用Spark的FIFO的調度模式,意味著那個任務先開始,后續的任務必須等待其完成結束后才能開始后續的查詢。大家可以編輯ya100目錄下的spark-defaults.conf配置文件,將其調度器,更改為公平調度模式,將一部分資源預留給較重要的查詢。具體可以參考這個。
http://www.07net01.com/program/658140.html
?
總結
以上是生活随笔為你收集整理的延云YDBYA100安装部署文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 商业拜访需要注意的13个小细节
- 下一篇: 百年工业,名词满天飞