1. 程式人生 > >大資料踩的坑

大資料踩的坑

hbase出現的問題:1、Hbase叢集啟動不了。regionserver.HRegionServer: error telling master we are upcom.google.protobuf.ServiceException: java.io.IOException: Call to user253166468785736-bigdata-master/172.30.24.7:16000 failed on local exception: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=0, waitTime=10001, operationTimeout=10000 expired.

解決方法

檢查/etc/hosts檔案,如下文,產生此問題的原因由hadoop116引起:
127.0.0.1 hadoop116 localhost.localdomain localhost4 localhost4.localdomain4
改成如下內容後重啟叢集,問題解決
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
此問題在stackoverflow中有這樣的描述: check your /etc/hosts file,if there is something like
127.0.0.1 localhost yourhost
change it to
127.0.0.1 localhost 192.168.1.1 yourhost
resourceManager 上檢視nodemanager 上的執行日誌在sbin 下啟動 mr_jobhistorysbin/mr-jobhistory-daemon.sh start historyserver./yarn-daemon.sh start timelineserver即可在web頁面檢視mr任務的歷史程序,jps檢視 多了一個程序。Yarn 日誌聚集功能(Aggregation)應用執行完成以後,將日誌資訊上傳到Hdfs檔案系統在hdfs相應的檔案路徑下會看到相關的log路徑在yarn-site.xml中配置相關引數yarn.log-aggregation-enable(日誌聚集) False(預設)yarn.log-aggregation.retain-seconds(日誌儲存時間) -1(永久)<property>        <name>yarn.log-aggregation-enable</name>        <value>true</value>    </property>       <property>        <name>yarn.log-aggregation.retain-seconds</name>        <value>640800/value>    //7天 </property>在web上 url:  master_ip:19888

Hadoop 故障:java.lang.OutOfMemoryError: Java heap space

2013年11月19日 14:06:51閱讀數:8764一個作業執行時,在maptask階段出現瞭如下錯誤:
  1. FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.OutOfMemoryError: Java heap space  
  2.         at org.apache.hadoop.io.Text.setCapacity(Text.java:240)  
  3.         at org.apache.hadoop.io.Text.append(Text.java:216)  
  4.         at org.apache.hadoop.util.LineReader.readLine(LineReader.java:159)  
  5.         at org.apache.hadoop.mapreduce.lib.input.LineRecordReader.nextKeyValue(LineRecordReader.java:97)  
  6.         at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:532)  
  7.         at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67)  
  8.         at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143)  
  9.         at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)  
  10.         at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)  
  11.         at org.apache.hadoop.mapred.Child$4.run(Child.java:255)  
  12.         at java.security.AccessController.doPrivileged(Native Method)  
  13.         at javax.security.auth.Subject.doAs(Subject.java:416)  
  14.         at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)  
  15.         at org.apache.hadoop.mapred.Child.main(Child.java:249)  
根據錯誤資訊初步判斷是JVM堆記憶體不夠用導致,有可能是單條資料過大,或JVM記憶體過小導致,首先驗證了該錯誤並非資料導致,方法是把導致問題的那行資料匯出來,單獨運行了MR是沒有問題的,檢查了MR沒有死迴圈分配記憶體的問題,那基本可以斷定確實是JVM的記憶體太小了,JVM的預設記憶體分配有兩種可能 1)、系統JVM預設分配,大小為實體記憶體的1/4 2)、在任務指令碼執行時指定map的執行指令碼會被hadoop封裝在taskjvm.sh中,文字檔案可以直接檢視
  1. exec setsid '/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java' '-Djava.library.path=/opt/hadoop104/libexec/../lib    /native/Linux-amd64-64:/data/tmp/mapred/local/taskTracker/hc/jobcache/job_201310281456_0718/attempt_201310281456_0718_m_0000    00_0/work' '-Xmx200m' '-Djava.net.preferIPv4Stack=true' .....  
分配了200m,由於叢集中沒有修改mapred.child.java.opts這個引數,在1.0.4版本中該值為 -Xmx200m,io.sort.mb預設為100m,那麼只剩100m供任務使用了,程式中的物件例項會用一部分,執行時臨時分配的buffer會用一部分,例如LineRecordReader分配的讀入緩衝區。這裡只要修改mapred.child.java.opts這個引數就可以了mapred-site.xml 新增:
  1. <property>
  2. <name>mapred.child.java.opts</name>
  3. <value>-Xmx1024m</value>
  4. </property>
這種辦法並不通用,因為很多情況下記憶體過載是由於程式碼造成的,那種情況下就要具體分析了。對於JVM記憶體的檢視可以使用jconsole,這是個圖形介面,能夠遠端連線JVM程序,分析JVM效能時可以使用這個工具1、啟動JVM時新增如下引數
  1. java -Djava.rmi.server.hostname=192.168.2.38 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false test  
當客戶向RM提交 作業時,由AM負責向RM提出資源申請,和向NameManager(NM)提出task執行 。也就是說 在這個過程中,RM負責資源排程,AM 負責任務排程。幾點重要說明:RM負責整個叢集的資源管理與排程;Nodemanager(NM)負責單個節點的資源管理與排程;NM定時的通過心跳的形式與RM進行通訊,報告節點的健康狀態與記憶體使用情況;AM通過與RM互動獲取資源,然後然後通過與NM互動,啟動計算任務。下面對上面的內容通過記憶體資源配置進行詳細說明:下面對上面的內容通過記憶體資源配置進行詳細說明:RM的記憶體資源配置,主要是通過下面的兩個引數進行的(這兩個值是Yarn平臺特性,應在yarn-sit.xml中配置好):yarn.scheduler.minimum-allocation-mb :4096yarn.scheduler.maximum-allocation-mb:512說明:單個容器可申請的最小與最大記憶體,應用在執行申請記憶體時不能超過最大值,小於最小值則分配最小值,從這個角度看,最小值有點想作業系統中的頁。最小值還有另外一種用途,計算一個節點的最大container數目注:這兩個值一經設定不能動態改變(此處所說的動態改變是指應用執行時)。NM的記憶體資源配置,主要是通過下面兩個引數進行的(這兩個值是Yarn平臺特性,應在yarn-sit.xml中配置) :yarn.nodemanager.resource.memory-mb:   4096yarn.nodemanager.vmem-pmem-ratio  :2.1說明:每個節點可用的最大記憶體,RM中的兩個值不應該超過此值。此數值可以用於計算container最大數目,即:用此值除以RM中的最小容器記憶體。虛擬記憶體率,是佔task所用記憶體的百分比,預設值為2.1倍;注意:第一個引數是不可修改的,一旦設定,整個執行過程中不可動態修改,且該值的預設大小是8G,即使計算機記憶體不足8G也會按著8G記憶體來使用。AM記憶體配置相關引數,此處以MapReduce為例進行說明(這兩個值是AM特性,應在mapred-site.xml中配置),如下:mapreduce.map.memory.mb  :  800mapreduce.reduce.memory.mb :1400說明:這兩個引數指定用於MapReduce的兩個任務(Map and Reduce task)的記憶體大小,其值應該在RM中的最大最小container之間。如果沒有配置則通過如下簡單公式獲得:max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers))一般的reduce應該是map的2倍。注:這兩個值可以在應用啟動時通過引數改變;AM中其它與記憶體相關的引數,還有JVM相關的引數,這些引數可以通過,如下選項配置:mapreduce.map.java.opts : 700mapreduce.reduce.java.opts:1024說明:這兩個參主要是為需要執行JVM程式(java、scala等)準備的,通過這兩個設定可以向JVM中傳遞引數的,與記憶體有關的是,-Xmx,-Xms等選項。此數值大小,應該在AM中的map.mb和reduce.mb之間。yanrn-site.xml<property>      <name>yarn.nodemanager.resource.cpu-vcores</name>      <value>2</value>    </property><property>      <name>yarn.nodemanager.resource.memory-mb</name>      <value>4096</value>    </property><property>      <name>yarn.scheduler.maximum-allocation-mb</name>      <value>4000</value>    </property>     <property>      <name>yarn.scheduler.maximum-allocation-vcores</name>      <value>3</value>    </property>    <property>      <name>yarn.scheduler.minimum-allocation-mb</name>      <value>512</value>    </property>    <property>      <name>yarn.scheduler.minimum-allocation-vcores</name>      <value>1</value>    </property>mapred-site.xml :<property>      <name>mapreduce.map.java.opts</name>      <value>-Xmx700m</value>    </property><property>      <name>mapreduce.map.memory.mb</name>      <value>800</value>    </property><property>      <name>mapreduce.reduce.java.opts</name>      <value>-Xmx1024m</value>    </property>  <property>      <name>mapreduce.reduce.memory.mb</name>      <value>1400</value>    </property>  <property>      <name>mapreduce.task.io.sort.mb</name>      <value>200</value>    </property>

相關推薦

資料過的

1.jps有資料①瀏覽器輸入:(機器名):50070打不開,把使用者名稱替換成ip地址訪問②瀏覽器輸入:(ip地址):50070還打不開,關閉防火牆  service iptables stop

資料

hbase出現的問題:1、Hbase叢集啟動不了。regionserver.HRegionServer: error telling master we are upcom.google.protobuf.ServiceException: java.io.IOExcepti

Struts2返回json格式資料記錄

事件起因 昨天提測修改凍結/解凍銀行卡樣式的功能,微姐測試過程中發現呼叫ajax請求耗時過長,今天來排查,發現瀏覽器請求/finance/ajax/freeze/ajaxGetShopLists時,對應的後端方法getShopList()莫名其妙地執行了兩遍,並且返回給瀏覽器的Json字串如下:

利用PostMan工具 ---post請求傳送Json資料 記錄

在我們平時開發中,特別是需要與介面打交道時,無論是寫介面還是用介面,拿到介面後肯定都得提前測試一下,這樣的話就非常需要有一個比較給力的Http請求模擬工具PostMan. post請求傳送

CDH資料計算管理平臺安裝所及相關注意事項

最近公司的基於CDH的Hadoop大資料計算平臺需要遷移,由於時間過長,原來的搭建步驟以及踩過的坑都忘得差不多了,現在為了將來能夠有個依據,特將本次重新搭建平臺所踩的坑給記錄下來。    使用的軟體及版本:        CDH-5.14.2-1.cdh5.14.2.p0.3

想入資料?必須要規劃學習路線

        乾貨走起,閒話不多說,以下就是小編整理的大資料學習思路 第一階段:linux系統 本階段為大資料學習入門基礎課程,幫大家進入大資料領取打好Linux基礎,以便更好的學習Hadoop、habse、NoSQL、saprk、storm等眾多技術要點。

學習資料技術,Hive實踐分享之儲存和壓縮的

在學習大資料技術的過程中,HIVE是非常重要的技術之一,但我們在專案上經常會遇到一些儲存和壓縮的坑,本文通過科多大資料的武老師整理,分享給大家。 大家都知道,由於叢集資源有限,我們一般都會針對資料檔案的「儲存結構」和「壓縮形式」進行配置優化。在我實際檢視以後,發現叢集的檔案儲存格式為Parque

經歷(七)MySQL匯出生產環境表結構和資料

在命令列視窗下執行即可 編號 需求 SQL 1 匯出資料庫為dbname的表結構(其中使用者名稱為root,密碼為dbpasswd,生成的指令碼名為db.sql) my

騰訊資料工程師奉勸各位資料入門者:莫以下三類大坑

騰訊高層21世紀是資料資訊大發展的時代,移動互聯、社交網路、電子商務等極大拓展了物聯網的邊界和應用範圍,各種資料正在迅速膨脹並變大。大資料是一種規模大到在獲取、管理、分析方面大大超出傳統資料庫軟體工具能力範圍的資料集合,具有海量的資料規模、快速的資料流轉、多樣的資料型別和價值密度低四大特徵。如果將大資料比作一

JavaScript筆記01---資料型別、變數、字面量、直接量

資料型別: JavaScript中,資料按照值的劃分,可以分為兩大資料型別:基本型別和引用型別。 基本資料型別: number 數值 string 字串

Swoft 筆記三 - 資料接收

恩恩,沒有什麼變態的操作,很舒服。 路由指向的是首頁。 use Swoft\Http\Message\Server\Request; public function index(Request $request): array { $inputs = $requ

重溫資料---Hive介紹與填配置

沿著前面的內容,接下來的文章就是關於Hive從基礎的搭建到高階應用的知識。鄙人在大二初學Hive的時候,只是覺得Hive和Mysql差不多,但是對於Hive為什麼叫做資料倉庫,以及Hive的UDF程式設計我並沒有太多思考。所以啊,為了混口飯吃遲早還是要還的。所幸目前算是明白了資料

Vue2配置axios跨域和從後端取資料賦值(記一)

Vue2配置axios跨域 這個系列主要記錄自己實習期間的踩坑過程,不完全準確,只能說這個方法確實解決了我自己的問題,歡迎交流,但不喜勿噴: main.js import Axios from 'axios' Vue.config.productionTip =

TensorFlow Object Detection API 超詳細教程和過程(資料準備和訓練)

1.準備資料     object detection的資料是需要tfrecord格式的,但是一般我們還是先製作voc格式的資料更加方便。     1.voc格式資料的準備:github上下載一個label-img:    然後選擇VOC格式,開始漫長的資料

Android style & Theme 再探析(三)——定製Theme示例和彙總

基於前兩篇的文章的探究,本次帶來的是面板切換和日夜間模式切換,以及基於重寫部分控制元件展示Theme的作用;以及對於實際使用時的講解,踩過的一些坑的彙總 Android Theme切換主題總結 筆者本文講述在實踐換膚以及日夜間模式切換的簡單Demo Andr

Mask R-CNN訓練自己的資料集在win10上的全過程:CUDA9.0+CUDNN7.1.4+Tensorflow-gpu1.9.0+keras-gpu2.2.4

基礎配置 首先你需要在win10上下載Git(用於我們在github上面下載原始碼)和MinGW(方便我們在win10上也能用linux的make操作命令)。 接著你要下載cuda9.0和cudnn7.1來繫結你的windows的Nvidia 接著你需要在win10上面安裝an

Realm資料之路

找個時間,得把各種資料庫的原理了解並記錄一下。現在先把使用過程中遇到的問題列一下: 1、切記realm資料庫支援的型別,使用了陣列和字典的要注意了,最好宣告一個NSData型別的對應屬性,然後使用ignoredProperties忽略陣列和字典型別的屬性。。在儲存時候轉化一

【echarts記錄】2.複選框+動態隱藏、顯示資料

第一節的例子裡我將ajax請求返回的所有資料都載入成了餅狀圖,但是實際應用中我們可能並不需要全部顯示,可能需要做一個多選框選擇需要的name再傳給後臺……然而我也不想修改sql。 於是就考慮在前端控制啦,後端只需要無腦一次查出全部的資料,讓前端折騰吧~使用者點哪裡我就顯示哪

疆無人機Android版SDK開發之旅(一)----前言

  最近一段時間一直在做大疆無人機安卓版開發,這水也是挺深的,不仔細看官網SDK的介紹就會遇到各種各樣的坑,簡單記錄一下,希望可以讓其他人少走一些彎路。   安卓端用到的SDK大概有兩種:Android SDK和Android UX SDK   Android SDK(官網介紹):   開發人員可以通過SDK

從無到有、從小到大,今日頭條資料平臺實踐經歷的那些

今日頭條(以下簡稱頭條)成立於 2012 年,本文作者王燁在 2014 年加入,那時公司人員僅三百人。2014 年,對頭條來說是很關鍵的階段,當時 DAU 只有幾百萬的級別;到 2016 年,DAU 達到 7800 萬,目前更多。 隨著公司規模的發展,資料量呈遞增式爆棚,他也見證了基礎資料平臺從無到