日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop平台日志结构

發布時間:2025/4/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop平台日志结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Hadoop集群部署

Hadoop集群:

Master:10.18.18.1

Slave1:10.18.18.100

Slave2:10.18.18.101

可互相通信、可連外網,操作系統均為:

#cat/etc/issue

Ubuntu14.04.4 LTS \n \l

# uname -a

Linux XXX3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 15:20:27 UTC 2015 x86_64x86_64x86_64 GNU/Linux

1.1Master部署

1)創建用戶hadoop

#sudo addgroup hadoop

#sudoadduser--ingroup hadoop hadoop??//password:hadoop

#vi/etc/sudoers? //在root下面增加一行,如下:

hadoop? ALL=(ALL:ALL) ALL

$ls -l /home?? //看到有hadoop文件夾。

$su hadoop//切換到hadoop用戶

2)jdk安裝

#cd/home/hadoop

#ls–ljdk1.8.0_20 //jdk解壓并通過cp–r命令復制到/home/hadoop文件夾下

drwxrwxr-x 2hadoophadoop???? 4096 May 12 11:39 bin

drwxrwxr-x 3hadoophadoop???? 4096 May 12 11:39include

drwxrwxr-x 5hadoophadoop???? 4096 May 12 11:39 jre

配置jdk路徑

#vi .bashrc

exportJAVA_HOME=/home/hodoop/jdk1.8.0_20

exportJRE_HOME=$JAVA_HOME/jre

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

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

#source.bashrc

#java –version

java version"1.8.0_20"

Java(TM) SERuntime Environment (build 1.8.0_20-b26)

JavaHotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

3)SSH免密碼

#sudoapt-get install ssh? //安裝ssh

#ls–a //看到.ssh文件夾,沒有mkdir .ssh創建

#ssh-keygen-t rsa? //提示輸入,直接回車

#ls -a .ssh? //.ssh文件下生成密鑰對:私鑰id_rsa和公鑰id_rsa.pub

.? ..?id_rsa? id_rsa.pub

#cat.ssh/id_rsa.pub >> .ssh/authorized_keys //追加到授權key中

4)設置主機名及與IP地址映射關系

#sudo vi/etc/hostname? //主機名修改為Master

或者通過#hostname Master

重啟生效

#sudo vi/etc/hosts ?//映射IP地址

10.18.18.100??? Slave1

10.18.18.101??? Slave2

10.18.18.1????? Master

5)Hadoop安裝

下載hadoop-2.7.2.tar.gz解壓到/home/hadoop目錄下。

#tar -zxvf hadoop-2.7.2.tar.gz

#ls -lhadoop-2.7.2

drwxr-xr-x 2hadoophadoop? 4096 Jan 26 08:20 bin

drwxr-xr-x 3hadoophadoop? 4096 Jan 26 08:20 etc

drwxr-xr-x 2hadoophadoop? 4096 Jan 26 08:20 include

drwxr-xr-x 3hadoophadoop? 4096 Jan 26 08:20 lib

drwxr-xr-x 2hadoophadoop? 4096 Jan 26 08:20 libexec

-rw-r--r-- 1hadoophadoop 15429 Jan 26 08:20 LICENSE.txt

-rw-r--r-- 1hadoophadoop?? 101 Jan 26 08:20NOTICE.txt

-rw-r--r-- 1hadoophadoop? 1366 Jan 26 08:20README.txt

drwxr-xr-x 2hadoophadoop? 4096 Jan 26 08:20 sbin

drwxr-xr-x 4hadoophadoop? 4096 Jan 26 08:20 share

如果文件夾所有者非hadoop用戶,要授權,命令如下:

#sudochown-R hadoop:hadoop hadoop-2.7.2

#cdhadoop-2.7.2 //進入hadoop目錄下增加

#mkdirhdfs

#mkdirhdfs/name

#mkdirhdfs/data

#mkdirhdfs/tmp

#ls -l hdfs

drwxrwxr-x 2hadoophadoop 4096 May 12 16:54 data

drwxrwxr-x 2hadoophadoop 4096 May 12 16:54 name

drwxrwxr-x 2hadoophadoop 4096 May 12 16:54 tmp

6)Hadoop配置

Set1:配置JDK路徑

#vi etc/hadoop/hadoop-env.sh

export JAVA_HOME=/home/hadoop/jdk1.8.0_20

#vi etc/hadoop/yarn-env.sh

export JAVA_HOME=/home/hadoop/jdk1.8.0_20

Set2:配置core-site

#vietc/hadoop/core-site.xml

<property>

<name>fs.default.name</name>

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

</property>

<property>

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

<value>/home/hadoop/hadoop-2.7.2/hdfs/tmp/hadoop-${user.name}</value>

</property>

Set3:配置hdfs-site

#vietc/hadoop/hdfs-site.xml

<property>

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

<value>/home/hadoop/hadoop-2.7.2/hdfs/name</value>

</property>

<property>

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

<value>/home/hadoop/hadoop-2.7.2/hdfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>Master:9001</value>

</property>

Set4:配置yarn-site

<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:8032</value>

</property>

<property>

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

<value>Master:8030</value>

</property>

<property>

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

<value>Master:8031</value>

</property>

<property>

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

<value>Master:8033</value>

</property>

<property>

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

<value>Master:8088</value>

</property>

<property>

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

<value>4096</value>

</property>

Set5:配置mapred-site

#vietc/hadoop/mapred-site.xml

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>Master:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>Master:19888</value>

</property>

Set6:配置Slaves

#vietc/hadoop/slaves

加入:Slave1和Slave2作為節點。

1.2Slave部署

1)、2)兩個步驟和Master步驟一樣,其中jdk文件包可通過scp遠程復制。如將master的jdk包復制到Slave1下:#scp-r /home/hadoop/jkd1.8.0_20 hadoop@10.18.18.100:/home/hadoop/

3)步驟安裝ssh后,復制master節點生成的文件,如:

$ssh-copy-idhadoop@Slave1

復制在Master服務器測試是否可以免密碼登錄:

$sshhadoop@Slave1

4)步驟和Master一樣,主機名分別設置為Slave1、Slave2,并和Master一樣建立映射IP地址。

5)和6)步驟直接將Master上配置好的Hadoop包復制到Slave1和Slave2的/home/hadoop目錄下。

#scp -r/home/hadoop/hadoop-2.7.2 hadoop@10.18.18.100:/home/hadoop/

1.3集群啟動

Master服務器進入/home/hadoop目錄

1)配置HADOOP_HOME

#vi .bashrc

export HADOOP_HOME=/home/hadoop/hadoop-2.7.2

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

#source.bashrc

2)初始化:

#hdfsnamenode-format

3)啟動hdfs集群

進入hadoop-2.7.2目錄

#sbin/start-dfs.sh

通過ssh遠程連接Master,啟動集群出現22端口無法連接。

Master: ssh: connect to host master port 22:Connection refused

#vi?/etc/ssh/sshd_config

port配置成22000,增加port端口22

4)啟動yarn集群

Master啟動resourcemanager

#sbin/yarn-daemon.shstart resourcemanager

Slave啟動nodemanager

#sbin/yarn-daemon.shstart nodemanager

5)查看進程

#jps? //master

13616 SecondaryNameNode

13763 Jps

7028ResourceManager

6645NameNode

#jps? //salve

1632 Jps

1285DataNode

1519NodeManager

集群啟動和停止也可分別執行sbin/start-all.sh和sbin/stop-all.sh命令。

1.4集群監控

集群監控命令:#hadoopdfsadmin-report

也可通過頁面監控:http://master:50070

問題:發現datanode已啟動,但網頁Live Nodes=0和 DFS=0 B,通過log查了好久,發現master對應的IP地址不是10.18.18.1,推測可能是/etc/hosts的映射出現問題,于是修改/etc/hosts文件,只保留如下四行:

10.18.18.100??? Slave1

10.18.18.101??? Slave2

10.18.18.1????? Master

127.0.0.1?????? localhost

重新啟動集群,可以看到2個節點的信息。

1.5作業執行

Master服務器下提交作業。

#hadoopfs-mkdir /data

#hadoopfs-putLICENSE.txt /data

#hadoop jar

/home/hadoop/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jarwordcount/data /output

#hadoopfs-ls /output

-rw-r--r--?? 1 hadoopsupergroup????????? 0 2016-05-17 09:49 /output/_SUCCESS

-rw-r--r--?? 1 hadoopsupergroup?????? 8006 2016-05-17 09:49/output/part-r-00000

#hadoopfs-cat /output/part-r-00000? //看結果

1.6Yarn框架

1)要重點理解下yarn框架,梳理master和slave的組件運作關系:

ResourceManager:RM,YARN的中控模塊,負責統一規劃資源的使用。

NodeManager:NM,YARN的資源結點模塊,負責啟動管理container。

ApplicationMaster:AM,YARN中每個應用都會啟動一個AM,負責向RM申請資源,請求NM啟動container,并告訴container執行的任務內容。

Container:資源容器,YARN中的AM在container上運行的, AM的container向RM申請。

當客戶向RM提交作業時,由AM負責向RM提出資源申請,和向NM提出task執行。RM負責資源調度,AM 負責任務調度。RM負責整個集群的資源管理與調度;NM負責單個節點的資源管理與調度;NM定時的通過心跳的形式與RM進行通信,報告節點的健康狀態與內存使用情況;AM通過與RM交互獲取資源,然后通過與NM交互,啟動計算任務。

2)在配置yarn-site.xml和mapred-site.xml時要注意不同集群內存資源配置不同的運行參數。

RM內存資源配置項(yarn-site.xml):

yarn.scheduler.minimum-allocation-mb

yarn.scheduler.maximum-allocation-mb

RM加載的調度器類實例(yarn-site.xml):

yarn.resourcemanager.scheduler.class

值可選:FairScheduler/CapacityScheduler

NM內存資源配置項(yarn-site.xml):

yarn.nodemanager.resource.memory-mb

yarn.nodemanager.vmem-pmem-ratio

AM內存配置項(mapred-site.xml):

mapreduce.map.memory.mb

mapreduce.reduce.memory.mb

JVM參數配置項(mapred-site.xml):

mapreduce.map.java.opts

mapreduce.reduce.java.opts

2.Hive部署

2.1元數據庫mysql

Master服務器Hadoop用戶:

#sudoapt-get install mysql-server

#mysql -uroot –p

mysql>createdatabase hive;

mysql>grantall on hive.* to hive@'%'? identified by'hive';

mysql>flushprivileges;

下載mysql的JDBC驅動包并復制到Hive的lib目錄下。

#cp

mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar

apache-hive-2.0.0-bin/lib

2.2Hive安裝配置

1)#tar-zxvfapache-hive-2.0.0-bin.tar.gz? //解壓到/home/hadoop

2)配置hive環境變量

#vi .bashrc

exportHIVE_HOME=/home/hadoop/apache-hive-2.0.0-bin

exportPATH=$PATH:$HIVE_HOME/bin

exportCLASSPATH=$CLASSPATH.:HIVE_HOME/lib

#source.bashrc

3)配置conf/hive-env.sh文件

復制hive-env.sh.template并命名為hive-env.sh

#mvconf/hive-env.sh.template conf/hive-env.sh

指定HADOOP_HOME及HIVE_CONF_DIR的路徑如下:

#viconf/hive-env.sh

HADOOP_HOME=/home/hadoop/hadoop-2.7.2

exportHIVE_CONF_DIR=/home/hadoop/apache-hive-2.0.0-bin/conf

4)新建conf/hive-site.xml文件

<?xmlversion="1.0"?>

<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>

<configuration>

<property>

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

<value>jdbc:mysql://Master:5306/hive</value>

</property>

<property>

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

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

</property>

<property>

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

<value>hive</value>

</property>

<property>

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

<value>hive</value>

</property>

<property>

?<name>hive.metastore.local</name>

?<value>true</value>

?</property>

</configuration>

2.3Hive運行

1)初始化:第一次

#schematool-dbTypemysql-initSchema

#schematool-dbTypemysql-info//查看

2)啟動Hadoop服務:$sbin/start-all.sh

3)#hive? //運行進入hive

4)查看hive元數據

#mysql -uhive -p

mysql>select*from VERSION;

3.日志結構

Hadoop平臺的運維需要從日志從尋找蛛絲馬跡,本文試著梳理下Hadoop平臺的各類日志,包括生態圈內相關組件。

3.1Linux日志

Linux日志路徑:/var/log,記錄日志文件是syslogd服務。

syslog的記錄一般包含:事件發生的日期和時間、事件發生的主機名、啟動時間的服務名、信息內容。日志記錄格式如下:

May 1016:34:09 server-128-15 sshd[638]: pam_unix(sshd:session): session opened foruser root by (uid=0)

syslog的配置文件在/etc/rsyslog.conf,規定不同服務的不同等級信息以及記錄輸出位置(設備或文件),如下:

# Log allthe mail messages in one place.

mail.*??????????????????????????????????????? ??????????-/var/log/maillog

如果要匯集Linux日志文件到日志文件服務器,則啟動日志文件服務器server的514端口,修改/etc/sysconfig/rsyslog文件的SYSLOGD_OPTIONS。對客戶端來說,要指定將信息傳送到主機上,假設日志文件服務器IP為:192.168.1.10,可在客戶端/etc/rsyslog.conf上增加如下一行:

*.*?? @192.168.1.10

重新啟動服務器和客戶端的syslogd服務,就可以在日志文件服務器上看到每行記錄上增加了客戶端主機名信息。

3.2Hadoop日志

默認日志路徑:${HADOOP_HOME}/logs目錄,日志的命名均包含用戶名稱、守護進程名稱和本地主機名等信息。

1)Master服務器日志

master中存放以log與out為后綴的兩類日志:

log日志文件通過log4j記錄的,大部分應用程序的日志消息都寫到該日志文件中,故障診斷的首要步驟即為檢查該文件;

hadoop-hadoop-namenode-Master.log

hadoop-hadoop-secondarynamenode-Master.log

yarn-hadoop-resourcemanager-Master.log

out日志文件記錄標準輸出和標準錯誤日志,由于大多日志均使用log4j輸出至log日志文件中,因此文件很小或者為空。系統僅保留最新的5個日志;

hadoop-hadoop-namenode-Master.out

hadoop-hadoop-secondarynamenode-Master.out

yarn-hadoop-resourcemanager-Master.Out

對于SecurityAuth-hadoop.audit日志文件暫不清楚其具體意義。

2)Slave服務器日志

和Master命名規則一致,也是輸出log和out為后綴的兩類日志:

hadoop-hadoop-datanode-Slave1.log

May 16 16:20hadoop-hadoop-datanode-Slave1.out

同樣也有SecurityAuth-hadoop.audit文件。

不同master的是,Slave服務器中還有userlogs文件夾,里面存放著application相關的日志信息。

#ls -llogs/userlogs

drwx--x--- 3hadoophadoop 4096 May 16 15:53 application_1463385140428_0001

drwx--x--- 3hadoophadoop 4096 May 16 14:57 application_1463381663123_0002

drwx--x--- 3hadoophadoop 4096 May 16 14:58 application_1463381663123_0003

3)log日志結構

每行記錄基本結構是:日期時間、類型、程序類、信息內容,類型分為:INFO、WARN、ERROR,如下:

2016-05-16 14:13:40,016 INFOorg.apache.hadoop.hdfs.server.namenode.FSNamesystem: fsLock is fair:true

2016-05-13 15:53:41,212 WARNorg.apache.hadoop.hdfs.server.common.Util: Path/home/hadoop/hadoop-2.7.2/hdfs/name should be specified as a URI inconfiguration files. Please update hdfs configuration.

2016-05-13 15:52:51,025 ERRORorg.apache.hadoop.hdfs.server.namenode.NameNode: RECEIVED SIGNAL 15: SIGTERM

4)out日志結構

RM和NM上的基本結構看是:日期時間、組件名、程序類、信息類型、信息內容,如下:

May 17, 2016 9:47:23

AM

com.sun.jersey.guice.spi.container.GuiceComponentProviderFactorygetComponentProvider

INFO:

Bindingorg.apache.hadoop.yarn.server.resourcemanager.webapp.JAXBContextResolver toGuiceManagedComponentProvider with the scope "Singleton"

Namenode和Datanode上貌似是提供程序的資源使用情況,如下:

ulimit -a for user hadoop

core file size????????? (blocks, -c) 0

dataseg size?????????? (kbytes, -d) unlimited

scheduling priority???????????? (-e) 0

file size?????????????? (blocks, -f) unlimited

pending signals???????????????? (-i) 256823

max locked memory?????? (kbytes, -l) 64

max memory size???????? (kbytes, -m) unlimited

open files????????????????????? (-n) 1024

pipe size??????????? (512 bytes, -p) 8

POSIX message queues? ???(bytes, -q) 819200

real-time priority????????????? (-r) 0

stack size????????????? (kbytes, -s) 8192

cpu time?????????????? (seconds, -t) unlimited

max user processes????????????? (-u) 256823

virtual memory????????? (kbytes, -v) unlimited

file locks???? ?????????????????(-x) unlimited

3.3Hive日志

Hive中的日志分為兩種:系統日志,記錄了hive的運行情況、錯誤狀況;Job 日志,記錄Hive 中job的執行的歷史過程。

1)日志存儲位置:

在hive/conf/hive-log4j.properties文件中記錄Hive日志的默認存儲情況,如下:

# list ofproperties

property.hive.log.level= INFO

property.hive.root.logger= DRFA

property.hive.log.dir= ${sys:java.io.tmpdir}/${sys:user.name}

property.hive.log.file= hive.log

到linux的根目錄下/tmp/hadoop查看hive.log文件。

2)#more/tmp/hadoop/hive.log

日志記錄結構:日期時間、類型、程序類、信息內容,看出類型有WARN、INFO、FATAL三類,如下:

2016-05-17T12:18:30,617 WARN? [main]: conf.HiveConf(HiveConf.java:initialize(3327)) - HiveConf of name hive.metastore.local doesnot exist

2016-05-17T12:19:09,666 INFO? [973807a9-510f-47a2-acec-4b24489b1e31973807a9-510f-47a2-acec-4b24489b1e31 main]: CliDriver (SessionState.java:printInfo(1007))- Time taken: 1.103 seconds

2016-05-17T11:44:21,969 FATAL [main]:conf.Configuration (Configuration.java:loadResource(2644)) - error parsing conffile:/home/hadoop/apache-hive-2.0.0-bin/conf/hive-site.xml

?

4.總結

Hadoop生態平臺存在大量日志,在hadoop運維過程中存在很多盲點,需要采集linux系統syslog以及其上hadoop集群生態組件的日志,加以分析輔助運維。

總結

以上是生活随笔為你收集整理的Hadoop平台日志结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。