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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用yum安装CDH Hadoop集群

發(fā)布時(shí)間:2025/3/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用yum安装CDH Hadoop集群 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用yum安裝CDH Hadoop集群?2013.04.06

Update:

  • 2014.07.21?添加 lzo 的安裝
  • 2014.05.20?修改cdh4為cdh5進(jìn)行安裝。
  • 2014.10.22?添加安裝 cdh5.2 注意事項(xiàng)。
    • 1、cdh5.2?發(fā)布了,其中 YARN 的一些配置參數(shù)做了修改,需要特別注意。
    • 2、Hive 的元數(shù)據(jù)如果使用 PostgreSql9.X,需要設(shè)置?standard_conforming_strings?為 off

環(huán)境

  • CentOS 6.4 x86_64
  • CDH 5.2.0
  • jdk1.6.0_31

集群規(guī)劃為3個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的ip、主機(jī)名和部署的組件分配如下:

192.168.56.121 cdh1 NameNode、Hive、ResourceManager、HBase192.168.56.122 cdh2 DataNode、SSNameNode、NodeManager、HBase192.168.56.123 cdh3 DataNode、HBase、NodeManager

1. 準(zhǔn)備工作

安裝 Hadoop 集群前先做好下面的準(zhǔn)備工作,在修改配置文件的時(shí)候,建議在一個(gè)節(jié)點(diǎn)上修改,然后同步到其他節(jié)點(diǎn),例如:對(duì)于 hdfs 和 yarn ,在 NameNode 節(jié)點(diǎn)上修改然后再同步,對(duì)于 HBase,選擇一個(gè)節(jié)點(diǎn)再同步。因?yàn)橐脚渲梦募驮诙鄠€(gè)節(jié)點(diǎn)啟動(dòng)服務(wù),建議配置 ssh 無(wú)密碼登陸。

1.1 配置hosts

CDH 要求使用 IPv4,IPv6 不支持。

禁用IPv6方法:

$ vim /etc/sysctl.conf #disable ipv6 net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.lo.disable_ipv6=1

使其生效:

$ sysctl -p

最后確認(rèn)是否已禁用:

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1

1、設(shè)置hostname,以cdh1為例

$ hostname cdh1

2、確保/etc/hosts中包含ip和FQDN,如果你在使用DNS,保存這些信息到/etc/hosts不是必要的,卻是最佳實(shí)踐。

3、確保/etc/sysconfig/network中包含hostname=cdh1

4、檢查網(wǎng)絡(luò),運(yùn)行下面命令檢查是否配置了hostname以及其對(duì)應(yīng)的ip是否正確。

運(yùn)行uname -a查看hostname是否匹配hostname命令運(yùn)行的結(jié)果:

$ uname -a Linux cdh1 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ hostname cdh1

運(yùn)行/sbin/ifconfig查看ip:

$ ifconfig eth1 Link encap:Ethernet HWaddr 08:00:27:75:E0:95 inet addr:192.168.56.121 Bcast:192.168.56.255 Mask:255.255.255.0 ......

先安裝bind-utils,才能運(yùn)行host命令:

$ yum install bind-utils -y

運(yùn)行下面命令查看hostname和ip是否匹配:

$ host -v -t A `hostname` Trying "cdh1" ... ;; ANSWER SECTION: cdh1. 60 IN A 192.168.56.121

5、hadoop的所有配置文件中配置節(jié)點(diǎn)名稱(chēng)時(shí),請(qǐng)使用hostname和不是ip

1.2 關(guān)閉防火墻

$ setenforce 0 $ vim /etc/sysconfig/selinux #修改SELINUX=disabled

清空iptables

$ iptables -F

1.3 時(shí)鐘同步

搭建時(shí)鐘同步服務(wù)器

這里選擇 cdh1 節(jié)點(diǎn)為時(shí)鐘同步服務(wù)器,其他節(jié)點(diǎn)為客戶(hù)端同步時(shí)間到該節(jié)點(diǎn)。、

安裝ntp:

$ yum install ntp

修改 cdh1 上的配置文件?/etc/ntp.conf?:

restrict default ignore?? //默認(rèn)不允許修改或者查詢(xún)ntp,并且不接收特殊封包 restrict 127.0.0.1??????? //給于本機(jī)所有權(quán)限 restrict 192.168.56.0 mask 255.255.255.0 notrap nomodify? //給于局域網(wǎng)機(jī)的機(jī)器有同步時(shí)間的權(quán)限 server? 192.168.56.121???? # local clock driftfile /var/lib/ntp/drift fudge?? 127.127.1.0 stratum 10

啟動(dòng) ntp:

$ service ntpd start

設(shè)置開(kāi)機(jī)啟動(dòng):

$ chkconfig ntpd on

ntpq用來(lái)監(jiān)視ntpd操作,使用標(biāo)準(zhǔn)的NTP模式6控制消息模式,并與NTP服務(wù)器通信。

ntpq -p?查詢(xún)網(wǎng)絡(luò)中的NTP服務(wù)器,同時(shí)顯示客戶(hù)端和每個(gè)服務(wù)器的關(guān)系。

$ ntpq -premote refid st t when poll reach delay offset jitter ============================================================================== *LOCAL(1) .LOCL. 5 l 6 64 1 0.000 0.000 0.000
  • "* ":響應(yīng)的NTP服務(wù)器和最精確的服務(wù)器。
  • "+":響應(yīng)這個(gè)查詢(xún)請(qǐng)求的NTP服務(wù)器。
  • "blank(空格)":沒(méi)有響應(yīng)的NTP服務(wù)器。
  • "remote" :響應(yīng)這個(gè)請(qǐng)求的NTP服務(wù)器的名稱(chēng)。
  • "refid ":NTP服務(wù)器使用的更高一級(jí)服務(wù)器的名稱(chēng)。
  • "st":正在響應(yīng)請(qǐng)求的NTP服務(wù)器的級(jí)別。
  • "when":上一次成功請(qǐng)求之后到現(xiàn)在的秒數(shù)。
  • "poll":當(dāng)前的請(qǐng)求的時(shí)鐘間隔的秒數(shù)。
  • "offset":主機(jī)通過(guò)NTP時(shí)鐘同步與所同步時(shí)間源的時(shí)間偏移量,單位為毫秒(ms)。

客戶(hù)端的配置

在cdh2和cdh3節(jié)點(diǎn)上執(zhí)行下面操作:

$ ntpdate cdh1

Ntpd啟動(dòng)的時(shí)候通常需要一段時(shí)間大概5分鐘進(jìn)行時(shí)間同步,所以在ntpd剛剛啟動(dòng)的時(shí)候還不能正常提供時(shí)鐘服務(wù),報(bào)錯(cuò)"no server suitable for synchronization found"。啟動(dòng)時(shí)候需要等待5分鐘。

如果想定時(shí)進(jìn)行時(shí)間校準(zhǔn),可以使用crond服務(wù)來(lái)定時(shí)執(zhí)行。

00 1 * * * root /usr/sbin/ntpdate 192.168.56.121 >> /root/ntpdate.log 2>&1

這樣,每天 1:00 Linux 系統(tǒng)就會(huì)自動(dòng)的進(jìn)行網(wǎng)絡(luò)時(shí)間校準(zhǔn)。

1.4 安裝jdk

以下是手動(dòng)安裝jdk,你也可以通過(guò)yum方式安裝,見(jiàn)下文。

檢查jdk版本

$ java -version

如果其版本低于v1.6 update 31,則將其卸載

$ rpm -qa | grep java $ yum remove {java-1.*}

驗(yàn)證默認(rèn)的jdk是否被卸載

$ which java

安裝jdk,使用yum安裝或者手動(dòng)下載安裝jdk-6u31-linux-x64.bin,下載地址:這里

$ yum install jdk -y

創(chuàng)建符號(hào)連接

$ ln -s XXXXX/jdk1.6.0_31 /usr/java/latest $ ln -s /usr/java/latest/bin/java /usr/bin/java

設(shè)置環(huán)境變量:

$ echo "export JAVA_HOME=/usr/java/latest" >>/root/.bashrc $ echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /root/.bashrc $ source /root/.bashrc

驗(yàn)證版本

$ java -versionjava version "1.6.0_31" Java(TM) SE Runtime Environment (build 1.6.0_31-b04) Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

檢查環(huán)境變量中是否有設(shè)置JAVA_HOME

$ env | grep JAVA_HOME

如果env中沒(méi)有JAVA_HOME變量,則修改/etc/sudoers文件

$ vi /etc/sudoersDefaults env_keep+=JAVA_HOME

1.5 設(shè)置本地yum源

你可以從這里下載 cdh4 的倉(cāng)庫(kù)壓縮包,或者從這里?下載 cdh5 的倉(cāng)庫(kù)壓縮包。

因?yàn)槲沂鞘褂玫腸entos操作系統(tǒng),故這里使用的cdh5的centos6倉(cāng)庫(kù),將其下載之后解壓配置cdh的yum源:

[hadoop] name=hadoop baseurl=ftp://cdh1/cdh/5/ enabled=1 gpgcheck=0

這里使用的是 ftp 搭建 yum 源,需要安裝 ftp 服務(wù),并將解壓后的目錄拷貝到 ftp 存放文件的目錄下。

操作系統(tǒng)的yum源,建議你通過(guò)下載 centos 的 dvd 然后配置一個(gè)本地的 yum 源。

其實(shí),在配置了CDH 的 yum 源之后,可以通過(guò) yum 來(lái)安裝 jdk,然后,設(shè)置 JAVA HOME:

$ yum install jdk -y

2. 安裝和配置HDFS

說(shuō)明:

  • 根據(jù)文章開(kāi)頭的節(jié)點(diǎn)規(guī)劃,cdh1 為NameNode節(jié)點(diǎn)和SecondaryNameNode
  • 根據(jù)文章開(kāi)頭的節(jié)點(diǎn)規(guī)劃,cdh2 和 cdh3 為DataNode節(jié)點(diǎn)

在 NameNode 節(jié)點(diǎn)安裝 hadoop-hdfs-namenode

$ yum install hadoop hadoop-hdfs hadoop-client hadoop-doc hadoop-debuginfo hadoop-hdfs-namenode

在 NameNode 節(jié)點(diǎn)中選擇一個(gè)節(jié)點(diǎn)作為 secondarynamenode ,并安裝 hadoop-hdfs-secondarynamenode

$ yum install hadoop-hdfs-secondarynamenode -y

在DataNode節(jié)點(diǎn)安裝 hadoop-hdfs-datanode

$ yum install hadoop hadoop-hdfs hadoop-client hadoop-doc hadoop-debuginfo hadoop-hdfs-datanode -y

配置 NameNode HA 請(qǐng)參考Introduction to HDFS High Availability

2.1 修改hadoop配置文件

更多的配置信息說(shuō)明,請(qǐng)參考?Apache Cluster Setup

  • 在/etc/hadoop/conf/core-site.xml中設(shè)置fs.defaultFS屬性值,該屬性指定NameNode是哪一個(gè)節(jié)點(diǎn)以及使用的文件系統(tǒng)是file還是hdfs,格式:hdfs://:/,默認(rèn)的文件系統(tǒng)是file:///
  • 在/etc/hadoop/conf/hdfs-site.xml中設(shè)置dfs.permissions.superusergroup屬性,該屬性指定hdfs的超級(jí)用戶(hù),默認(rèn)為hdfs,你可以修改為hadoop
  • 配置如下:

    /etc/hadoop/conf/core-site.xml:

    fs.defaultFS hdfs://cdh1:8020

    /etc/hadoop/conf/hdfs-site.xml:

    dfs.permissions.superusergroup hadoop

    2.2 指定本地文件目錄

    在hadoop中默認(rèn)的文件路徑以及權(quán)限要求如下:

    目錄 所有者 權(quán)限 默認(rèn)路徑 hadoop.tmp.dir hdfs:hdfs drwx------ /var/hadoop dfs.namenode.name.dir hdfs:hdfs drwx------ file://${hadoop.tmp.dir}/dfs/name dfs.datanode.data.dir hdfs:hdfs drwx------ file://${hadoop.tmp.dir}/dfs/data dfs.namenode.checkpoint.dir hdfs:hdfs drwx------ file://${hadoop.tmp.dir}/dfs/namesecondary

    說(shuō)明你可以在hdfs-site.xml中只配置 `hadoop.tmp.dir`,也可以分別配置上面的路徑。

    這里使用分別配置的方式,hdfs-site.xml中配置如下:

    dfs.namenode.name.dir file:///data/dfs/nn dfs.datanode.data.dir file:///data/dfs/dn

    在NameNode上手動(dòng)創(chuàng)建?dfs.name.dir?或?dfs.namenode.name.dir?的本地目錄:

    $ mkdir -p /data/dfs/nn

    在DataNode上手動(dòng)創(chuàng)建?dfs.data.dir?或?dfs.datanode.data.dir?的本地目錄:

    $ mkdir -p /data/dfs/dn

    修改上面目錄所有者:

    $ chown -R hdfs:hdfs /data/dfs/nn /data/dfs/dn

    hadoop的進(jìn)程會(huì)自動(dòng)設(shè)置?dfs.data.dir?或?dfs.datanode.data.dir,但是?dfs.name.dir?或?dfs.namenode.name.dir?的權(quán)限默認(rèn)為755,需要手動(dòng)設(shè)置為700。

    故,修改上面目錄權(quán)限:

    $ chmod 700 /data/dfs/nn

    或者:

    $ chmod go-rx /data/dfs/nn

    說(shuō)明:

    DataNode的本地目錄可以設(shè)置多個(gè),你可以設(shè)置?dfs.datanode.failed.volumes.tolerated?參數(shù)的值,表示能夠容忍不超過(guò)該個(gè)數(shù)的目錄失敗。

    2.3 配置 SecondaryNameNode

    在?/etc/hadoop/conf/hdfs-site.xml?中可以配置以下參數(shù):

    dfs.namenode.checkpoint.check.period dfs.namenode.checkpoint.txns dfs.namenode.checkpoint.dir dfs.namenode.checkpoint.edits.dir dfs.namenode.num.checkpoints.retained

    如果想配置SecondaryNameNode節(jié)點(diǎn),請(qǐng)從NameNode中單獨(dú)選擇一臺(tái)機(jī)器,然后做以下設(shè)置:

    • 將運(yùn)行SecondaryNameNode的機(jī)器名稱(chēng)加入到masters
    • 在?/etc/hadoop/conf/hdfs-site.xml?中加入如下配置:
    dfs.secondary.http.address cdh1:50090

    設(shè)置多個(gè)secondarynamenode,請(qǐng)參考multi-host-secondarynamenode-configuration.

    2.4 開(kāi)啟回收站功能

    回收站功能默認(rèn)是關(guān)閉的,建議打開(kāi)。

    在?/etc/hadoop/conf/core-site.xml?中添加如下兩個(gè)參數(shù):

    • fs.trash.interval,該參數(shù)值為時(shí)間間隔,單位為分鐘,默認(rèn)為0,表示回收站功能關(guān)閉。該值表示回收站中文件保存多長(zhǎng)時(shí)間,如果服務(wù)端配置了該參數(shù),則忽略客戶(hù)端的配置;如果服務(wù)端關(guān)閉了該參數(shù),則檢查客戶(hù)端是否有配置該參數(shù);
    • fs.trash.checkpoint.interval,該參數(shù)值為時(shí)間間隔,單位為分鐘,默認(rèn)為0。該值表示檢查回收站時(shí)間間隔,該值要小于fs.trash.interval,該值在服務(wù)端配置。如果該值設(shè)置為0,則使用?fs.trash.interval?的值。

    2.5 (可選)配置DataNode存儲(chǔ)的負(fù)載均衡

    在?/etc/hadoop/conf/hdfs-site.xml?中配置以下三個(gè)參數(shù)(詳細(xì)說(shuō)明,請(qǐng)參考?Optionally configure DataNode storage balancing):

    • dfs.datanode.fsdataset. volume.choosing.policy
    • dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold
    • dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction

    2.6 開(kāi)啟WebHDFS

    這里只在一個(gè)NameNode節(jié)點(diǎn)( CDH1 )上安裝:

    $ yum install hadoop-httpfs -y

    然后配置代理用戶(hù),修改 /etc/hadoop/conf/core-site.xml,添加如下代碼:

    hadoop.proxyuser.httpfs.hosts * hadoop.proxyuser.httpfs.groups *

    然后重啟 Hadoop 使配置生效。

    接下來(lái),啟動(dòng) HttpFS 服務(wù):

    $ service hadoop-httpfs start

    By default, HttpFS server runs on port 14000 and its URL is http://:14000/webhdfs/v1.

    簡(jiǎn)單測(cè)試,使用 curl 運(yùn)行下面命令,并查看執(zhí)行結(jié)果:

    $ curl "http://localhost:14000/webhdfs/v1?op=gethomedirectory&user.name=hdfs" {"Path":"\/user\/hdfs"}

    更多的 API,請(qǐng)參考?WebHDFS REST API

    2.7 配置LZO

    下載repo文件到?/etc/yum.repos.d/:

    • 如果你安裝的是 CDH4,請(qǐng)下載Red Hat/CentOS 6
    • 如果你安裝的是 CDH5,請(qǐng)下載Red Hat/CentOS 6

    然后,安裝lzo:

    $ yum install hadoop-lzo* impala-lzo -y

    最后,在?/etc/hadoop/conf/core-site.xml?中添加如下配置:

    io.compression.codecs org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec,com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.SnappyCodec io.compression.codec.lzo.class com.hadoop.compression.lzo.LzoCodec

    更多關(guān)于LZO信息,請(qǐng)參考:Using LZO Compression

    2.8 (可選)配置Snappy

    cdh 的 rpm 源中默認(rèn)已經(jīng)包含了 snappy ,直接安裝即可。

    在每個(gè)節(jié)點(diǎn)安裝Snappy:

    $ yum install snappy snappy-devel -y

    然后,在?core-site.xml?中修改io.compression.codecs的值,添加?org.apache.hadoop.io.compress.SnappyCodec?:

    io.compression.codecs org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec, com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec, org.apache.hadoop.io.compress.SnappyCodec

    使 snappy 對(duì) hadoop 可用:

    $ ln -sf /usr/lib64/libsnappy.so /usr/lib/hadoop/lib/native/

    2.9 啟動(dòng)HDFS

    將配置文件同步到每一個(gè)節(jié)點(diǎn):

    $ scp -r /etc/hadoop/conf root@cdh2:/etc/hadoop/ $ scp -r /etc/hadoop/conf root@cdh3:/etc/hadoop/

    格式化NameNode:

    $ sudo -u hdfs hadoop namenode -format

    在每個(gè)節(jié)點(diǎn)運(yùn)行下面命令啟動(dòng)hdfs:

    $ for x in `ls /etc/init.d/|grep hadoop-hdfs` ; do service $x start ; done

    在 hdfs 運(yùn)行之后,創(chuàng)建?/tmp?臨時(shí)目錄,并設(shè)置權(quán)限為?1777:

    $ sudo -u hdfs hadoop fs -mkdir /tmp $ sudo -u hdfs hadoop fs -chmod -R 1777 /tmp

    2.10 訪問(wèn)web

    通過(guò)?http://cdh1:50070/?可以訪問(wèn) NameNode 頁(yè)面。

    3. 安裝和配置YARN

    節(jié)點(diǎn)規(guī)劃

    • 根據(jù)文章開(kāi)頭的節(jié)點(diǎn)規(guī)劃,cdh1 為resourcemanager節(jié)點(diǎn)
    • 根據(jù)文章開(kāi)頭的節(jié)點(diǎn)規(guī)劃,cdh2 和 cdh3 為nodemanager節(jié)點(diǎn)
    • 為了簡(jiǎn)單,historyserver也裝在 cdh1 節(jié)點(diǎn)上

    安裝服務(wù)

    在 resourcemanager 節(jié)點(diǎn)安裝:

    $ yum install hadoop-yarn hadoop-yarn-resourcemanager -y

    在 nodemanager 節(jié)點(diǎn)安裝:

    $ yum install hadoop-yarn hadoop-yarn-nodemanager hadoop-mapreduce -y

    安裝 historyserver:

    $ yum install hadoop-mapreduce-historyserver hadoop-yarn-proxyserver -y

    修改配置參數(shù)

    要想使用YARN,需要在?/etc/hadoop/conf/mapred-site.xml?中做如下配置:

    mapreduce.framework.name yarn

    配置resourcemanager的節(jié)點(diǎn)名稱(chēng)以及一些服務(wù)的端口號(hào),修改/etc/hadoop/conf/yarn-site.xml:

    yarn.resourcemanager.resource-tracker.address cdh1:8031 yarn.resourcemanager.address cdh1:8032 yarn.resourcemanager.scheduler.address cdh1:8030 yarn.resourcemanager.admin.address cdh1:8033 yarn.resourcemanager.webapp.address cdh1:8088

    配置YARN進(jìn)程:

    • yarn.nodemanager.aux-services,在CDH4中該值設(shè)為?mapreduce.shuffle,在CDH5中該值設(shè)為?mapreduce_shuffle
    • yarn.nodemanager.aux-services.mapreduce.shuffle.class,該值設(shè)為?org.apache.hadoop.mapred.ShuffleHandler
    • yarn.resourcemanager.hostname,該值設(shè)為 cdh1
    • yarn.log.aggregation.enable,該值設(shè)為 true
    • yarn.application.classpath,該值設(shè)為:
    $HADOOP_CONF_DIR, $HADOOP_COMMON_HOME/*, $HADOOP_COMMON_HOME/lib/*, $HADOOP_HDFS_HOME/*, $HADOOP_HDFS_HOME/lib/*, $HADOOP_MAPRED_HOME/*, $HADOOP_MAPRED_HOME/lib/*, $HADOOP_YARN_HOME/*, $HADOOP_YARN_HOME/lib/*

    即,在?/etc/hadoop/conf/yarn-site.xml?中添加如下配置:

    yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.log-aggregation-enable true yarn.application.classpath $HADOOP_CONF_DIR, $HADOOP_COMMON_HOME/*, $HADOOP_COMMON_HOME/lib/*, $HADOOP_HDFS_HOME/*, $HADOOP_HDFS_HOME/lib/*, $HADOOP_MAPRED_HOME/*, $HADOOP_MAPRED_HOME/lib/*, $HADOOP_YARN_HOME/*, $HADOOP_YARN_HOME/lib/* yarn.log.aggregation.enable true

    注意:

    a.?yarn.nodemanager.aux-services?的值在 cdh4 中應(yīng)該為?mapreduce.shuffle,并配置參數(shù)yarn.nodemanager.aux-services.mapreduce.shuffle.class值為 org.apache.hadoop.mapred.ShuffleHandler ,在cdh5中為mapreduce_shuffle,這時(shí)候請(qǐng)配置yarn.nodemanager.aux-services.mapreduce_shuffle.class參數(shù)

    b. 這里配置了?yarn.application.classpath?,需要設(shè)置一些喜歡環(huán)境變量:

    export HADOOP_HOME=/usr/lib/hadoop export HIVE_HOME=/usr/lib/hive export HBASE_HOME=/usr/lib/hbase export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce export HADOOP_COMMON_HOME=${HADOOP_HOME} export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs export HADOOP_LIBEXEC_DIR=${HADOOP_HOME}/libexec export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop

    配置文件路徑

    在hadoop中默認(rèn)的文件路徑以及權(quán)限要求如下:

    目錄 所有者 權(quán)限 默認(rèn)路徑 yarn.nodemanager.local-dirs yarn:yarn drwxr-xr-x ${hadoop.tmp.dir}/nm-local-dir yarn.nodemanager.log-dirs yarn:yarn drwxr-xr-x ${yarn.log.dir}/userlogs yarn.nodemanager.remote-app-log-dir hdfs://cdh1:8020/var/log/hadoop-yarn/apps

    在?/etc/hadoop/conf/yarn-site.xml文件中添加如下配置:

    yarn.nodemanager.local-dirs file:///data/yarn/local yarn.nodemanager.log-dirs file:///data/yarn/logs yarn.nodemanager.remote-app-log-dir /yarn/apps

    創(chuàng)建本地目錄

    創(chuàng)建?yarn.nodemanager.local-dirs?和?yarn.nodemanager.log-dirs?參數(shù)對(duì)應(yīng)的目錄:

    $ mkdir -p /data/yarn/{local,logs} $ chown -R yarn:yarn /data/yarn

    創(chuàng)建Log目錄

    在 hdfs 上創(chuàng)建?yarn.nodemanager.remote-app-log-dir?對(duì)應(yīng)的目錄:

    $ sudo -u hdfs hadoop fs -mkdir -p /yarn/apps $ sudo -u hdfs hadoop fs -chown yarn:mapred /yarn/apps $ sudo -u hdfs hadoop fs -chmod 1777 /yarn/apps

    配置History Server:

    在?/etc/hadoop/conf/mapred-site.xml?中添加如下:

    mapreduce.jobhistory.address cdh1:10020 mapreduce.jobhistory.webapp.address cdh1:19888

    此外,確保 mapred 用戶(hù)能夠使用代理,在?/etc/hadoop/conf/core-site.xml?中添加如下參數(shù):

    hadoop.proxyuser.mapred.groups * hadoop.proxyuser.mapred.hosts *

    配置 Staging 目錄:

    在?/etc/hadoop/conf/mapred-site.xml?中配置參數(shù)?yarn.app.mapreduce.am.staging-dir(該值默認(rèn)為:/tmp/hadoop-yarn/staging,請(qǐng)參見(jiàn)?mapred-default.xml):

    yarn.app.mapreduce.am.staging-dir /user

    并在 hdfs 上創(chuàng)建相應(yīng)的目錄:

    $ sudo -u hdfs hadoop fs -mkdir -p /user $ sudo -u hdfs hadoop fs -chmod 777 /user

    創(chuàng)建 history 子目錄

    可選的,你可以在?/etc/hadoop/conf/mapred-site.xml?設(shè)置以下兩個(gè)參數(shù):

    • mapreduce.jobhistory.intermediate-done-dir,該目錄權(quán)限應(yīng)該為1777,默認(rèn)值為?${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate
    • mapreduce.jobhistory.done-dir,該目錄權(quán)限應(yīng)該為750,默認(rèn)值為?${yarn.app.mapreduce.am.staging-dir}/history/done

    在 hdfs 上創(chuàng)建目錄并設(shè)置權(quán)限:

    $ sudo -u hdfs hadoop fs -mkdir -p /user/history $ sudo -u hdfs hadoop fs -chmod -R 1777 /user/history $ sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history

    驗(yàn)證 HDFS 結(jié)構(gòu):

    $ sudo -u hdfs hadoop fs -ls -R /

    你應(yīng)該看到如下結(jié)構(gòu):

    drwxrwxrwt - hdfs hadoop 0 2014-04-19 14:21 /tmp drwxrwxrwx - hdfs hadoop 0 2014-04-19 14:26 /user drwxrwxrwt - mapred hadoop 0 2014-04-19 14:31 /user/history drwxr-x--- - mapred hadoop 0 2014-04-19 14:38 /user/history/done drwxrwxrwt - mapred hadoop 0 2014-04-19 14:48 /user/history/done_intermediate drwxr-xr-x - hdfs hadoop 0 2014-04-19 15:31 /yarn drwxrwxrwt - yarn mapred 0 2014-04-19 15:31 /yarn/apps

    看到上面的目錄結(jié)構(gòu),你就將NameNode上的配置文件同步到其他節(jié)點(diǎn)了,并且啟動(dòng) yarn 的服務(wù)。

    同步配置文件

    同步配置文件到整個(gè)集群:

    $ scp -r /etc/hadoop/conf root@cdh2:/etc/hadoop/ $ scp -r /etc/hadoop/conf root@cdh3:/etc/hadoop/

    啟動(dòng)服務(wù)

    在 cdh1 節(jié)點(diǎn)啟動(dòng) mapred-historyserver :

    $ /etc/init.d/hadoop-mapreduce-historyserver start

    在每個(gè)節(jié)點(diǎn)啟動(dòng) YARN :

    $ for x in `ls /etc/init.d/|grep hadoop-yarn` ; do service $x start ; done

    為每個(gè) MapReduce 用戶(hù)創(chuàng)建主目錄,比如說(shuō) hive 用戶(hù)或者當(dāng)前用戶(hù):

    $ sudo -u hdfs hadoop fs -mkdir /user/$USER $ sudo -u hdfs hadoop fs -chown $USER /user/$USER

    設(shè)置?HADOOP_MAPRED_HOME?,或者把其加入到 hadoop 的配置文件中

    $ export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

    訪問(wèn) web

    通過(guò)?http://cdh1:8088/?可以訪問(wèn) Yarn 的管理頁(yè)面。

    通過(guò)?http://cdh1:19888/?可以訪問(wèn) JobHistory 的管理頁(yè)面。

    查看在線的節(jié)點(diǎn):http://cdh1:8088/cluster/nodes。

    運(yùn)行下面的測(cè)試程序,看是否報(bào)錯(cuò):

    # Find how many jars name ending with examples you have inside location /usr/lib/ $ find /usr/lib/ -name "*hadoop*examples*.jar" # To list all the class name inside jar $ find /usr/lib/ -name "hadoop-examples.jar" | xargs -0 -I '{}' sh -c 'jar tf {}' # To search for specific class name inside jar $ find /usr/lib/ -name "hadoop-examples.jar" | xargs -0 -I '{}' sh -c 'jar tf {}' | grep -i wordcount.class # 運(yùn)行 randomwriter 例子 $ sudo -u hdfs hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar randomwriter out

    4. 安裝 Zookeeper

    簡(jiǎn)單說(shuō)明:

    Zookeeper 至少需要3個(gè)節(jié)點(diǎn),并且節(jié)點(diǎn)數(shù)要求是基數(shù),這里在所有節(jié)點(diǎn)上都安裝 Zookeeper。

    安裝

    在每個(gè)節(jié)點(diǎn)上安裝zookeeper

    $ yum install zookeeper* -y

    修改配置文件

    設(shè)置 zookeeper 配置?/etc/zookeeper/conf/zoo.cfg

    maxClientCnxns=50 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper clientPort=2181 server.1=cdh1:2888:3888 server.2=cdh3:2888:3888 server.3=cdh3:2888:3888

    同步配置文件

    將配置文件同步到其他節(jié)點(diǎn):

    $ scp -r /etc/zookeeper/conf root@cdh2:/etc/zookeeper/ $ scp -r /etc/zookeeper/conf root@cdh3:/etc/zookeeper/

    初始化并啟動(dòng)服務(wù)

    在每個(gè)節(jié)點(diǎn)上初始化并啟動(dòng) zookeeper,注意 n 的值需要和 zoo.cfg 中的編號(hào)一致。

    在 cdh1 節(jié)點(diǎn)運(yùn)行

    $ service zookeeper-server init --myid=1 $ service zookeeper-server start

    在 cdh2 節(jié)點(diǎn)運(yùn)行

    $ service zookeeper-server init --myid=2 $ service zookeeper-server start

    在 cdh3 節(jié)點(diǎn)運(yùn)行

    $ service zookeeper-server init --myid=3 $ service zookeeper-server start

    測(cè)試

    通過(guò)下面命令測(cè)試是否啟動(dòng)成功:

    $ zookeeper-client -server cdh1:2181

    5. 安裝 HBase

    HBase 依賴(lài) ntp 服務(wù),故需要提前安裝好 ntp。

    安裝前設(shè)置

    1)修改系統(tǒng) ulimit 參數(shù):

    在?/etc/security/limits.conf?中添加下面兩行并使其生效:

    hdfs - nofile 32768 hbase - nofile 32768

    2)修改?dfs.datanode.max.xcievers

    在?hdfs-site.xml?中修改該參數(shù)值,將該值調(diào)整到較大的值:

    dfs.datanode.max.xcievers 8192

    安裝

    在每個(gè)節(jié)點(diǎn)上安裝 master 和 regionserver

    $ yum install hbase hbase-master hbase-regionserver -y

    如果需要你可以安裝 hbase-rest、hbase-solr-indexer、hbase-thrift

    修改配置文件

    修改?hbase-site.xml文件,關(guān)鍵幾個(gè)參數(shù)及含義如下:

    • hbase.distributed:是否為分布式模式
    • hbase.rootdir:HBase在hdfs上的目錄路徑
    • hbase.tmp.dir:本地臨時(shí)目錄
    • hbase.zookeeper.quorum:zookeeper集群地址,逗號(hào)分隔
    • hbase.hregion.max.filesize:hregion文件最大大小
    • hbase.hregion.memstore.flush.size:memstore文件最大大小

    另外,在CDH5中建議關(guān)掉Checksums(見(jiàn)Upgrading HBase)以提高性能,修改為如下:

    hbase.regionserver.checksum.verify false hbase.hstore.checksum.algorithm NULL

    最后的配置如下,供參考:

    hbase.cluster.distributed true hbase.rootdir hdfs://cdh1:8020/hbase hbase.tmp.dir /data/hbase hbase.zookeeper.quorum cdh1,cdh2,cdh3 hbase.hregion.max.filesize 536870912 hbase.hregion.memstore.flush.size 67108864 hbase.regionserver.lease.period 600000 hbase.client.retries.number 3 hbase.regionserver.handler.count 100 hbase.hstore.compactionThreshold 10 hbase.hstore.blockingStoreFiles 30 hbase.regionserver.checksum.verify false hbase.hstore.checksum.algorithm NULL

    在 hdfs 中創(chuàng)建?/hbase?目錄

    $ sudo -u hdfs hadoop fs -mkdir /hbase $ sudo -u hdfs hadoop fs -chown hbase:hbase /hbase

    設(shè)置 crontab 定時(shí)刪除日志:

    $ crontab -e * 10 * * * cd /var/log/hbase/; rm -rf `ls /var/log/hbase/|grep -P 'hbase\-hbase\-.+\.log\.[0-9]'\`>> /dev/null &

    同步配置文件

    將配置文件同步到其他節(jié)點(diǎn):

    $ scp -r /etc/hbase/conf root@cdh2:/etc/hbase/ $ scp -r /etc/hbase/conf root@cdh3:/etc/hbase/

    創(chuàng)建本地目錄

    在 hbase-site.xml 配置文件中配置了?hbase.tmp.dir?值為?/data/hbase,現(xiàn)在需要在每個(gè) hbase 節(jié)點(diǎn)創(chuàng)建該目錄并設(shè)置權(quán)限:

    $ mkdir /data/hbase $ chown -R hbase:hbase /data/hbase/

    啟動(dòng)HBase

    $ for x in `ls /etc/init.d/|grep hbase` ; do service $x start ; done

    訪問(wèn)web

    通過(guò)?http://cdh1:60030/?可以訪問(wèn) RegionServer 頁(yè)面,然后通過(guò)該頁(yè)面可以知道哪個(gè)節(jié)點(diǎn)為 Master,然后再通過(guò) 60010 端口訪問(wèn) Master 管理界面。

    6. 安裝hive

    在一個(gè) NameNode 節(jié)點(diǎn)上安裝 hive:

    $ yum install hive hive-metastore hive-server2 hive-jdbc hive-hbase -y

    在其他 DataNode 上安裝:

    $ yum install hive hive-server2 hive-jdbc hive-hbase -y

    安裝postgresql

    這里使用 postgresq l數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)元數(shù)據(jù),如果你想使用 mysql 數(shù)據(jù)庫(kù),請(qǐng)參考下文。

    手動(dòng)安裝、配置 postgresql 數(shù)據(jù)庫(kù),請(qǐng)參考?手動(dòng)安裝Cloudera Hive CDH

    yum 方式安裝:

    $ yum install postgresql-server -y

    初始化數(shù)據(jù)庫(kù):

    $ service postgresql initdb

    修改配置文件postgresql.conf,修改完后內(nèi)容如下:

    $ cat /var/lib/pgsql/data/postgresql.conf | grep -e listen -e standard_conforming_strings listen_addresses = '*' standard_conforming_strings = off

    修改 /var/lib/pgsql/data/pg_hba.conf,添加以下一行內(nèi)容:

    host all all 0.0.0.0/0 trust

    啟動(dòng)數(shù)據(jù)庫(kù)

    #配置開(kāi)啟啟動(dòng) $ chkconfig postgresql on $ service postgresql start

    安裝jdbc驅(qū)動(dòng)

    $ yum install postgresql-jdbc -y $ ln -s /usr/share/java/postgresql-jdbc.jar /usr/lib/hive/lib/postgresql-jdbc.jar

    創(chuàng)建數(shù)據(jù)庫(kù)和用戶(hù)

    bash# su postgresbash$ psql postgres=# CREATE USER hiveuser WITH PASSWORD 'redhat'; postgres=# CREATE DATABASE metastore owner=hiveuser; postgres=# GRANT ALL privileges ON DATABASE metastore TO hiveuser; postgres=# \q; bash$ psql -U hiveuser -d metastore postgres=# \i /usr/lib/hive/scripts/metastore/upgrade/postgres/hive-schema-0.13.0.postgres.sql SET SET ..

    注意:
    創(chuàng)建的用戶(hù)為hiveuser,密碼為redhat,你可以按自己需要進(jìn)行修改。
    初始化數(shù)據(jù)庫(kù)的 sql 文件請(qǐng)根據(jù) cdh 版本進(jìn)行修改,這里我的 cdh 版本是5.2.0,對(duì)應(yīng)的文件是 ive-schema-0.13.0.postgres.sql

    這時(shí)候的hive-site.xml文件內(nèi)容如下:

    javax.jdo.option.ConnectionURL jdbc:postgresql://localhost/metastore javax.jdo.option.ConnectionDriverName org.postgresql.Driver javax.jdo.option.ConnectionUserName hiveuser javax.jdo.option.ConnectionPassword redhat datanucleus.autoCreateSchema false mapreduce.framework.name yarn yarn.resourcemanager.resource-tracker.address cdh1:8031 hive.files.umask.value 0002 hive.exec.reducers.max 999 hive.auto.convert.join true hive.metastore.schema.verification true hive.metastore.warehouse.dir /user/hive/warehouse hive.warehouse.subdir.inherit.perms true hive.metastore.uris thrift://cdh1:9083 hive.metastore.server.min.threads 200 hive.metastore.server.max.threads 100000 hive.metastore.client.socket.timeout 3600 hive.support.concurrency true hive.zookeeper.quorum cdh1,cdh2,cdh3 hive.server2.thrift.min.worker.threads 5 hive.server2.thrift.max.worker.threads 100

    默認(rèn)情況下,hive-server和 hive-server2 的 thrift 端口都未10000,如果要修改 hive-server2 thrift 端口,請(qǐng)?zhí)砑?#xff1a;

    hive.server2.thrift.port 10001

    如果要設(shè)置運(yùn)行 hive 的用戶(hù)為連接的用戶(hù)而不是啟動(dòng)用戶(hù),則添加:

    hive.server2.enable.impersonation true

    并在 core-site.xml 中添加:

    hadoop.proxyuser.hive.hosts * hadoop.proxyuser.hive.groups *

    安裝mysql

    yum方式安裝mysql:

    $ yum install mysql mysql-devel mysql-server mysql-libs -y

    啟動(dòng)數(shù)據(jù)庫(kù):

    #配置開(kāi)啟啟動(dòng) $ chkconfig mysqld on $ service mysqld start

    安裝jdbc驅(qū)動(dòng):

    $ yum install mysql-connector-java $ ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar

    我是在 cdh1 節(jié)點(diǎn)上創(chuàng)建 mysql 數(shù)據(jù)庫(kù)和用戶(hù):

    $ mysql -e " CREATE DATABASE metastore; USE metastore; SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.13.0.mysql.sql; CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'redhat'; GRANT ALL PRIVILEGES ON metastore.* TO 'hiveuser'@'localhost'; GRANT ALL PRIVILEGES ON metastore.* TO 'hiveuser'@'cdh1'; FLUSH PRIVILEGES; "

    注意:創(chuàng)建的用戶(hù)為 hiveuser,密碼為 redhat ,你可以按自己需要進(jìn)行修改。

    修改 hive-site.xml 文件中以下內(nèi)容:

    javax.jdo.option.ConnectionURL jdbc:mysql://cdh1:3306/metastore?useUnicode=true&characterEncoding=UTF-8 javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver

    配置hive

    修改/etc/hadoop/conf/hadoop-env.sh,添加環(huán)境變量?HADOOP_MAPRED_HOME,如果不添加,則當(dāng)你使用 yarn 運(yùn)行 mapreduce 時(shí)候會(huì)出現(xiàn)?UNKOWN RPC TYPE?的異常

    export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

    在 hdfs 中創(chuàng)建 hive 數(shù)據(jù)倉(cāng)庫(kù)目錄:

    • hive 的數(shù)據(jù)倉(cāng)庫(kù)在 hdfs 中默認(rèn)為?/user/hive/warehouse,建議修改其訪問(wèn)權(quán)限為?1777,以便其他所有用戶(hù)都可以創(chuàng)建、訪問(wèn)表,但不能刪除不屬于他的表。
    • 每一個(gè)查詢(xún) hive 的用戶(hù)都必須有一個(gè) hdfs 的 home 目錄(?/user?目錄下,如 root 用戶(hù)的為?/user/root)
    • hive 所在節(jié)點(diǎn)的?/tmp?必須是 world-writable 權(quán)限的。

    創(chuàng)建目錄并設(shè)置權(quán)限:

    $ sudo -u hdfs hadoop fs -mkdir /user/hive $ sudo -u hdfs hadoop fs -chown hive /user/hive $ sudo -u hdfs hadoop fs -mkdir /user/hive/warehouse $ sudo -u hdfs hadoop fs -chmod 1777 /user/hive/warehouse $ sudo -u hdfs hadoop fs -chown hive /user/hive/warehouse

    啟動(dòng)hive-server和metastore:

    $ service hive-metastore start $ service hive-server start $ service hive-server2 start

    測(cè)試:

    $ hive -e 'create table t(id int);' $ hive -e 'select * from t limit 2;' $ hive -e 'select id from t;'

    訪問(wèn)beeline:

    $ /usr/lib/hive/bin/beelinebeeline> !connect jdbc:hive2://localhost:10000 username password org.apache.hive.jdbc.HiveDriver0: jdbc:hive2://localhost:10000> SHOW TABLES; show tables; +-----------+ | tab_name | +-----------++-----------+No rows selected (0.238 seconds) 0: jdbc:hive2://localhost:10000>

    其 sql語(yǔ)法參考SQLLine CLI,在這里,你不能使用HiveServer的sql語(yǔ)句

    與hbase集成

    先安裝 hive-hbase:

    $ yum install hive-hbase -y

    如果你是使用的 cdh4,則需要在 hive shell 里執(zhí)行以下命令添加 jar:

    $ ADD JAR /usr/lib/hive/lib/zookeeper.jar; $ ADD JAR /usr/lib/hive/lib/hbase.jar; $ ADD JAR /usr/lib/hive/lib/hive-hbase-handler-<hive_version>.jar $ ADD JAR /usr/lib/hive/lib/guava-11.0.2.jar;

    說(shuō)明:?guava 包的版本以實(shí)際版本為準(zhǔn)。

    如果你是使用的 cdh5,則需要在 hive shell 里執(zhí)行以下命令添加 jar:

    ADD JAR /usr/lib/hive/lib/zookeeper.jar; ADD JAR /usr/lib/hive/lib/hive-hbase-handler.jar; ADD JAR /usr/lib/hbase/lib/guava-12.0.1.jar; ADD JAR /usr/lib/hbase/hbase-client.jar; ADD JAR /usr/lib/hbase/hbase-common.jar; ADD JAR /usr/lib/hbase/hbase-hadoop-compat.jar; ADD JAR /usr/lib/hbase/hbase-hadoop2-compat.jar; ADD JAR /usr/lib/hbase/hbase-protocol.jar; ADD JAR /usr/lib/hbase/hbase-server.jar;

    以上你也可以在 hive-site.xml 中通過(guò)?hive.aux.jars.path?參數(shù)來(lái)配置,或者你也可以在 hive-env.sh 中通過(guò)?export HIVE_AUX_JARS_PATH=?來(lái)設(shè)置。

    總結(jié)

    以上是生活随笔為你收集整理的使用yum安装CDH Hadoop集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。