`
wbj0110
  • 浏览: 1586929 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用yum安装CDH Hadoop集群

阅读更多

Update:

  • 2014.05.20 修改cdh4为cdh5进行安装。

集群规划为3个节点,每个节点的ip、主机名和部署的组件分配如下:

    192.168.56.121        cdh1     NameNode、Hive、ResourceManager、HBase
    192.168.56.122        cdh2     DataNode、SSNameNode、NodeManager、HBase
    192.168.56.123        cdh3     DataNode、HBase、NodeManager

1. 准备工作

1.1 配置hosts

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

1、设置hostname,以cdh1为例

$ sudo hostname cdh1

2、确保/etc/hosts中包含ip和FQDN,如果你在使用DNS,保存这些信息到/etc/hosts不是必要的,却是最佳实践。

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

4、检查网络,运行下面命令检查是否配置了hostname以及其对应的ip是否正确。

运行uname -a查看hostname是否匹配hostname命令运行的结果:

$ 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

运行/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,才能运行host命令:

$ yum install bind-utils -y

运行host -v -t Ahostname`` 查看hostname和ip是否匹配:

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

5、hadoop的所有配置文件中配置节点名称时,请使用hostname和不是ip

1.2 关闭防火墙

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

清空iptables

$ iptables -F

1.3 时钟同步

在所有节点安装ntp:

$ yum install ntp

设置开机启动:

$ chkconfig ntpd on

在所有节点启动ntp:

$ /etc/init.d/ntpd start

是client使用local NTP server,修改/etc/ntp.conf,添加以下内容:

server $LOCAL_SERVER_IP OR HOSTNAME

1.4 安装jdk

以下是手动安装jdk,你也可以通过yum方式安装,见下文。

检查jdk版本

$ java -version

如果其版本低于v1.6 update 31,则将其卸载

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

验证默认的jdk是否被卸载

$ which java

安装jdk,使用yum安装或者手动下载安装jdk-6u31-linux-x64.bin,下载地址:这里

$ yum install jdk -y

创建符号连接

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

设置环境变量:

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

验证版本

$ java -version
    java 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)

检查环境变量中是否有设置JAVA_HOME

$ sudo env | grep JAVA_HOME

如果env中没有JAVA_HOME变量,则修改/etc/sudoers文件

$ vi /etc/sudoers
    Defaults env_keep+=JAVA_HOME

1.5 设置本地yum源

你可以从这里下载 cdh4 的仓库压缩包,或者从这里 下载 cdh5 的仓库压缩包。

这里我是使用的cdh5的仓库,将其下载之后解压配置cdh的yum源:

[hadoop]
name=hadoop
baseurl=file:///vagrant/repo/cdh/5/
enabled=1
gpgcheck=0

操作系统的yum是使用的CentOS6-Base-163.repo,其配置如下:

[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#released updates 
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/contrib/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

其实,在配置了CDH的yum之后,可以通过yum来安装jdk:

$ yum install jdk -y

然后,设置JAVA HOME:

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

验证版本

$ java -version
    java 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)

2. 安装和配置HDFS

说明:

  • 根据文章开头的节点规划,cdh1 为NameNode节点
  • 根据文章开头的节点规划,cdh2 和 cdh3 为DataNode节点

在NameNode节点安装 hadoop-hdfs-namenode

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

在NameNode节点中选择一个节点作为secondarynamenode,并安装 hadoop-hdfs-secondarynamenode

$ yum install hadoop-hdfs-secondarynamenode -y

在DataNode节点安装 hadoop-hdfs-datanode

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

配置 NameNode HA 请参考Introduction to HDFS High Availability

2.1 自定义hadoop配置文件

拷贝默认的配置文件为一个新的文件,并设置新文件为hadoop的默认配置文件:

$ sudo cp -r /etc/hadoop/conf.empty /etc/hadoop/conf.my_cluster
$ sudo alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50 
$ sudo alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

hadoop默认使用/etc/hadoop/conf路径读取配置文件,经过上述配置之后,/etc/hadoop/conf会软连接到/etc/hadoop/conf.my_cluster目录

2.2 自定义配置

更多的配置信息说明,请参考 Apache Cluster Setup

  1. core-site.xml中设置fs.defaultFS属性值,该属性指定NameNode是哪一个节点以及使用的文件系统是file还是hdfs,格式:hdfs://<namenode host>:<namenode port>/,默认的文件系统是file:///
  2. hdfs-site.xml中设置dfs.permissions.superusergroup属性,该属性指定hdfs的超级用户,默认为hdfs,你可以修改为hadoop

示例配置如下:

core-site.xml:

<property>
 <name>fs.defaultFS</name>
 <value>hdfs://cdh1:8020</value>
</property>

hdfs-site.xml:

<property>
 <name>dfs.permissions.superusergroup</name>
 <value>hadoop</value>
</property>

2.3 指定本地文件目录

在hadoop中默认的文件路径以及权限要求如下:

目录                                  所有者       权限      默认路径
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

示例配置如下:

hdfs-site.xml on the NameNode:

<property>
 <name>dfs.namenode.name.dir</name>
 <value>file:///data/dfs/nn</value>
</property>

hdfs-site.xml on each DataNode:

<property>
 <name>dfs.datanode.data.dir</name>
<value>file:///data/dfs/dn</value>
</property>

NameNode上手动创建 dfs.name.dir 或 dfs.namenode.name.dir 的本地目录:

$ sudo mkdir -p /data/dfs/nn

DataNode上手动创建 dfs.data.dir 或 dfs.datanode.data.dir 的本地目录:

$ sudo mkdir -p /data/dfs/dn

修改上面目录所有者:

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

hadoop的进程会自动设置 dfs.data.dir 或 dfs.datanode.data.dir,但是 dfs.name.dir 或 dfs.namenode.name.dir 的权限默认为755,需要手动设置为700。

故,修改上面目录权限:

$ sudo chmod 700 /data/dfs/nn

或者:

$ sudo chmod go-rx /data/dfs/nn

说明:

DataNode的本地目录可以设置多个,你可以设置 dfs.datanode.failed.volumes.tolerated 参数的值,表示能够容忍不超过该个数的目录失败。

SecondaryNameNode在 hdfs-site.xml 中可以配置以下参数:

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

如果想配置SecondaryNameNode节点,请从NameNode中单独选择一台机器,然后做以下设置:

  • 将运行SecondaryNameNode的机器名称加入到masters
  • 在 hdfs-site.xml 中加入如下配置:
<property>
  <name>dfs.namenode.http-address</name>
  <value>cdh1:50070</value>
  <description>
    The address and the base port on which the dfs NameNode Web UI will listen.
  </description>
</property>

设置多个secondarynamenode,请参考multi-host-secondarynamenode-configuration.

2.4 (可选)开启回收站功能

回收站功能默认是关闭的,建议打开。

在 core-site.xml 中添加如下两个参数:

  • fs.trash.interval,该参数值为时间间隔,单位为分钟,默认为0,表示回收站功能关闭。该值表示回收站中文件保存多长时间,如果服务端配置了该参数,则忽略客户端的配置;如果服务端关闭了该参数,则检查客户端是否有配置该参数;
  • fs.trash.checkpoint.interval,该参数值为时间间隔,单位为分钟,默认为0。该值表示检查回收站时间间隔,该值要小于fs.trash.interval,该值在服务端配置。如果该值设置为0,则使用 fs.trash.interval 的值。

2.5 (可选)配置DataNode存储的负载均衡

在 hdfs-site.xml 中配置以下三个参数(详细说明,请参考 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 (可选)开启WebHDFS

请参考 Optionally enable WebHDFS

2.7 (可选)配置LZO

下载Red Hat/CentOS 6文件到 /etc/yum.repos.d/

然后,安装lzo:

$ sudo yum install hadoop-lzo  -y

最后,在 core-site.xml 中添加如下配置:

<property>
  <name>io.compression.codecs</name>
<value>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</value>
</property>

更多关于LZO信息,请参考:Using LZO Compression

2.8 (可选)配置Snappy

cdh 的 rpm 源中默认已经包含了 snappy ,可以再不用安装。

在每个节点安装Snappy

$ yum install snappy snappy-devel  -y

然后,在 core-site.xml 中修改io.compression.codecs的值:

<property>
  <name>io.compression.codecs</name>
<value>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</value>
</property>

使 snappy 对 hadoop 可用:

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

2.9 启动HDFS

将配置文件同步到每一个节点:

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

在每个节点上设置默认配置文件:

$ sudo alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50 
$ sudo alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

格式化NameNode:

$ sudo -u hdfs hadoop namenode -format

在每个节点运行下面命令启动hdfs:

$ for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

在 hdfs 运行之后,创建 /tmp 临时目录,并设置权限为 1777

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

2.10 总结

在NameNode上做过的操作:

在DataNode上做过的操作:

在SecondaryNameNode上做过的操作:

3. 安装和配置YARN

说明:

  • 根据文章开头的节点规划,cdh1 为resourcemanager节点
  • 根据文章开头的节点规划,cdh2 和 cdh3 为nodemanager节点

在resourcemanager节点安装:

$ yum install hadoop-yarn-resourcemanager
$ yum install hadoop-mapreduce-historyserver

在nodemanager节点安装:

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

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

<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
</property>

配置YARN进程:

  • yarn.nodemanager.aux-services ,该值设为mapreduce_shuffle
  • yarn.resourcemanager.hostname ,该值设为cdh1
  • 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/*

在hadoop中默认的文件路径以及权限要求如下:

目录                                  所有者       权限      默认路径
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://var/log/hadoop-yarn/apps

最后,yarn-site.xml文件如下:

    <configuration>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>cdh1:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>cdh1:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>cdh1:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>cdh1:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>cdh1:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce.shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.application.classpath</name>
        <value>
        $HADOOP_CONF_DIR,
        $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
        $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
        $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
        $YARN_HOME/*,$YARN_HOME/lib/*
        </value>
    </property>
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>file:///data/yarn/local</value>
    </property>
    <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>file:///var/log/hadoop-yarn</value>
    </property>
    <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>hdfs://var/log/hadoop-yarn/apps</value>
    </property>
    </configuration>

创建本地目录:

创建 yarn.nodemanager.local-dirs 参数对应的目录:

$ sudo mkdir -p /data/yarn/local 
$ sudo chown -R yarn:yarn /data/yarn/local

创建 yarn.nodemanager.log-dirs 参数对应的目录:

$ sudo mkdir -p /var/log/hadoop-yarn
$ sudo chown -R yarn:yarn /var/log/hadoop-yarn

配置History Server:

在 mapred-site.xml 中添加如下参数:

  • mapreduce.jobhistory.address,该值为 historyserver.company.com:10020
  • mapreduce.jobhistory.webapp.address,该值为 historyserver.company.com:19888

此外,确保 mapred 用户能够使用代理,在 core-site.xml 中添加如下参数:

  • hadoop.proxyuser.mapred.groups,默认值为*,Allows the mapreduser to move files belonging to users in these groups
  • hadoop.proxyuser.mapred.hosts,默认值为*,Allows the mapreduser to move files belonging to users in these groups

配置Staging目录:

在 mapred-site.xml 中配置 yarn.app.mapreduce.am.staging-dir 参数:

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

在 HDFS 运行之后,你需要手动创建 history 子目录:

$ 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

可选的,你可以在 mapred-site.xml 设置以下两个参数:

  • mapreduce.jobhistory.intermediate-done-dir,该目录权限应该为1777
  • mapreduce.jobhistory.done-dir,该目录权限应该为750

如果你设置了上面两个参数,那你可以不用手动去创建history子目录。

创建Log目录

创建 /var/log/hadoop-yarn ,因为 yarn-site.xml 中配置了 /var/log/hadoop-yarn/apps ,故需要手动创建它的父目录:

$ sudo -u hdfs hadoop fs -mkdir -p /var/log/hadoop-yarn
$ sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn

验证 HDFS 结构:

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

你应该看到如下结构:

drwxrwxrwt   - hdfs hadoop          0 2014-04-19 14:31 /tmp
drwxr-xr-x   - hdfs hadoop          0 2014-04-31 10:26 /user
drwxrwxrwt   - yarn hadoop          0 2014-04-19 14:31 /user/history
drwxr-xr-x   - hdfs   hadoop        0 2014-04-31 15:31 /var
drwxr-xr-x   - hdfs   hadoop        0 2014-04-31 15:31 /var/log
drwxr-xr-x   - yarn   mapred        0 2014-04-31 15:31 /var/log/hadoop-yarn

同步配置文件到整个集群:

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

启动 mapred-historyserver :

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

在每个节点启动YARN:

$ for x in `cd /etc/init.d ; ls hadoop-yarn-*` ; do sudo service $x start ; done

为每个 MapReduce 用户创建主目录

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

设置 HADOOP_MAPRED_HOME ,或者把其加入到 hadoop 的配置文件中

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

设置开机启动

    sudo chkconfig hadoop-hdfs-namenode on
    sudo chkconfig hadoop-hdfs-datanode on
    sudo chkconfig hadoop-hdfs-secondarynamenode on
    sudo chkconfig hadoop-yarn-resourcemanager on
    sudo chkconfig hadoop-yarn-nodemanager on
    sudo chkconfig hadoop-mapreduce-historyserver on
    sudo chkconfig hbase-master on
    sudo chkconfig hbase-regionserver on
    sudo chkconfig hive-metastore  on
    sudo chkconfig hive-server2 on
    sudo chkconfig zookeeper-server on
    sudo chkconfig hadoop-httpfs on

4. 安装HttpFS

5. 安装Zookeeper

在每个节点上安装zookeeper

$ yum install zookeeper*

拷贝默认的配置文件为一个新的文件,并设置新文件为 zookeeper 的默认配置文件:

$ sudo cp -r /etc/zookeeper/conf.empty /etc/hadoop/conf.my_cluster
$ sudo alternatives --verbose --install /etc/zookeeper/conf zookeeper-conf /etc/zookeeper/conf.my_cluster 50 
$ sudo alternatives --set zookeeper-conf /etc/zookeeper/conf.my_cluster

zookeeper 默认使用 /etc/zookeeper/conf 路径读取配置文件,经过上述配置之后,/etc/zookeeper/conf 会软连接到 /etc/zookeeper/conf.my_cluster 目录

设置crontab:

$ crontab -e
    15 * * * * java -cp $classpath:/usr/lib/zookeeper/lib/log4j-1.2.15.jar:\
    /usr/lib/zookeeper/lib/jline-0.9.94.jar:\   
    /usr/lib/zookeeper/zookeeper.jar:/usr/lib/zookeeper/conf\
    org.apache.zookeeper.server.PurgeTxnLog /var/zookeeper/ -n 5

在每个需要安装 zookeeper 的节点上创建 zookeeper 的目录

$ mkdir -p /opt/data/zookeeper
$ chown -R zookeeper:zookeeper /opt/data/zookeeper

设置 zookeeper 配置 /etc/zookeeper/conf/zoo.cfg ,并同步到其他机器

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/opt/data/zookeeper
    clientPort=2181
    server.1=node1:2888:3888
    server.2=node2:2888:3888
    server.3=node3:2888:3888

在每个节点上初始化并启动zookeeper,注意修改n值

$ service zookeeper-server init --myid=n
$ service zookeeper-server restart

6. 安装HBase

在每个节点上安装master和regionserver

$ yum install hbase*

拷贝默认的配置文件为一个新的文件,并设置新文件为 hbase 的默认配置文件:

$ sudo cp -r /etc/hbase/conf.empty /etc/hbase/conf.my_cluster
$ sudo alternatives --verbose --install /etc/hbase/conf hbase-conf /etc/hbase/conf.my_cluster 50 
$ sudo alternatives --set hbase-conf /etc/hbase/conf.my_cluster

hbase 默认使用 /etc/hbase/conf 路径读取配置文件,经过上述配置之后,/etc/hbase/conf 会软连接到 /etc/hbase/conf.my_cluster目录

在hdfs中创建/hbase

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

设置crontab:

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

修改配置文件并同步到其他机器:

修改hbase-site.xml文件:

    <configuration>
    <property>
        <name>hbase.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://cdh1:8020/hbase</value>
    </property>
    <property>
        <name>hbase.tmp.dir</name>
        <value>/opt/data/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>cdh1,cdh2,cdh3</value>
    </property>
    <property>
        <name>hbase.hregion.max.filesize</name>
        <value>536870912</value>
      </property>
      <property>
        <name>hbase.hregion.memstore.flush.size</name>
        <value>67108864</value>
      </property>
      <property>
        <name>hbase.regionserver.lease.period</name>
        <value>600000</value>
      </property>
      <property>
        <name>hbase.client.retries.number</name>
        <value>3</value>
      </property> 
      <property>
        <name>hbase.regionserver.handler.count</name>
        <value>100</value>
      </property>
      <property>
        <name>hbase.zookeeper.property.maxClientCnxns</name>
        <value>2000</value>
      </property>
      <property>
        <name>hfile.block.cache.size</name>
        <value>0.1</value>
      </property>
      <property>
        <name>hbase.regions.slop</name>
        <value>0</value>
      </property>
      <property>
        <name>hbase.hstore.compactionThreshold</name>
        <value>10</value>
      </property>
      <property>
        <name>hbase.hstore.blockingStoreFiles</name>
        <value>30</value>
      </property>
    </configuration>

修改regionserver文件

启动HBase

$ service hbase-master start
$ service hbase-regionserver start

7. 安装hive

在一个NameNode节点上安装 hive:

$ sudo yum install hive*

拷贝默认的配置文件为一个新的文件,并设置新文件为 hive 的默认配置文件:

$ sudo cp -r /etc/hive/conf.empty /etc/hive/conf.my_cluster
$ sudo alternatives --verbose --install /etc/hive/conf hive-conf /etc/hive/conf.my_cluster 50 
$ sudo alternatives --set hive-conf /etc/hive/conf.my_cluster

hive 默认使用 /etc/hive/conf 路径读取配置文件,经过上述配置之后,/etc/hive/conf 会软连接到 /etc/hive/conf.my_cluster目录

安装postgresql

手动安装、配置postgresql数据库,请参考手动安装Cloudera Hive CDH

yum方式安装:

$ sudo yum install postgresql-server

初始化数据库:

$ sudo service postgresql initdb

修改配置文件postgresql.conf,修改完后内容如下:

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

修改 pg_hba.conf,添加以下一行内容:

    host    all         all         0.0.0.0         0.0.0.0               md5

启动数据库

$ sudo service postgresql start

配置开启启动

$ chkconfig postgresql on

安装jdbc驱动

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

创建数据库和用户

    bash# sudo –u postgres psql
    bash$ 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.10.0.postgres.sql
    SET
    SET
    ..

修改配置文件

修改hive-site.xml文件:

    <configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://cdh1:8020</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:postgresql://cdh1/metastore</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>org.postgresql.Driver</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hiveuser</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>redhat</value>
    </property>
    <property>
     <name>mapred.job.tracker</name>
     <value>cdh1:8031</value>
    </property>
    <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
    </property>
    <property>
        <name>datanucleus.autoCreateSchema</name>
        <value>false</value>
    </property>
    <property>
        <name>datanucleus.fixedDatastore</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://cdh1:9083</value>
    </property>
    <property>
        <name>hive.metastore.local</name>
        <value>false</value>
    </property>
    <property>
      <name>hive.support.concurrency</name>
      <value>true</value>
    </property>
    <property>
      <name>hive.zookeeper.quorum</name>
      <value>cdh1,cdh2,cdh3</value>
    </property>
    <property>
      <name>hive.hwi.listen.host</name>
      <value>cdh1</value>
    </property>
    <property>
      <name>hive.hwi.listen.port</name>
      <value>9999</value>
    </property>
    <property>
      <name>hive.hwi.war.file</name>
      <value>lib/hive-hwi-0.10.0-cdh4.2.0.war</value>
    </property>
    <property>
      <name>hive.merge.mapredfiles</name>
      <value>true</value>
    </property>
    </configuration>

修改/etc/hadoop/conf/hadoop-env.sh:

添加环境变量HADOOP_MAPRED_HOME,如果不添加,则当你使用yarn运行mapreduce时候会出现UNKOWN RPC TYPE的异常

export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

在hdfs中创建hive数据仓库目录:

  • hive的数据仓库在hdfs中默认为/user/hive/warehouse,建议修改其访问权限为1777,以便其他所有用户都可以创建、访问表,但不能删除不属于他的表。
  • 每一个查询hive的用户都必须有一个hdfs的home目录(/user目录下,如root用户的为/user/root)
  • hive所在节点的 /tmp必须是world-writable权限的。

创建目录并设置权限:

$ 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

启动hive-server和metastore:

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

访问beeline:

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

其 sql语法参考SQLLine CLI,在这里,你不能使用HiveServer的sql语句

与hbase集成

需要在hive里添加以下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-0.12.0-cdh5.0.1.jar
$ ADD JAR /usr/lib/hive/lib/guava-11.0.2.jar;

8. 参考文章

http://blog.javachen.com/2013/04/06/install-cloudera-cdh-by-yum/

分享到:
评论

相关推荐

    Centos7.4离线本地yum源自动化安装CDH5.13.0脚本

    本文档将详细介绍如何利用CentOS 7.4平台下的离线本地YUM源来实现Cloudera Distribution Including Hadoop (CDH) 5.13.0版本的自动化安装过程。此脚本不仅简化了CDH集群的部署流程,还提高了安装效率,适合在生产...

    hadoop集群内lzo的安装与配置

    本文假设使用 CentOS 5.5 操作系统和 Hadoop-0.20.2-CDH3B4 版本。 二、安装所需软件包 安装 LZO 需要以下软件包: * gcc * ant * lzo * lzo-devel 这些软件包可以通过 yum 或 rpm 命令安装。 三、LZO 库安装 ...

    CDH_5.7.0_基于VM虚拟机的hadoop集群搭建

    ### CDH 5.7.0 基于VM虚拟机的Hadoop集群搭建 #### 总述 本文档详细介绍了如何在VMware Workstation Pro 12虚拟化平台上搭建一个CDH 5.7.0 Hadoop集群,用于测试环境。通过此文档的学习与实践,读者能够了解在...

    CDH集群部署手册(For CDH5)

    《CDH集群部署手册(For CDH5)》是一份详尽的指南,旨在帮助用户成功部署和管理CDH(Cloudera Distribution Including Apache Hadoop)5版本的集群。CDH是Cloudera公司提供的一个全面、经过企业级优化的Apache Hadoop...

    大数据集群卸载CM,卸载CDH,清除CDH 文件

    在IT行业中,大数据集群的管理和运维是一项复杂的...总之,卸载CM和CDH需要对Hadoop集群有深入理解,并严格按照步骤进行,以确保系统稳定和数据安全。同时,整个过程应配合官方文档和最佳实践,确保所有操作符合预期。

    安装hadoopCDH5安装服务步骤.doc

    本篇将详细阐述使用Cloudera Manager在CDH5上安装和配置Hive、HBase、Impala以及Spark的服务步骤。 **一、安装前准备工作** 在开始安装CDH5之前,确保完成以下准备工作: 1. **下载安装所需文件**:这包括...

    CDH5集群部署指南

    本文档主要介绍如何在Linux系统下部署一个完整的分布式CDH5(Hadoop)集群。CDH5是Cloudera Distribution Including Apache Hadoop (CDH) 的一个版本,它提供了企业级的数据处理能力,包括Hadoop的核心组件和其他...

    hadoop集群安装.docx

    以下是对Hadoop集群安装过程的详细说明: 1. **安装前的准备工作**: 在开始安装之前,需要确保你拥有合适的硬件环境和软件工具。在本例中,使用了VMware虚拟机作为平台。首先,你需要在客户端安装`VMware-...

    编译hadoop-2.5.0-cdh5.3.6 + snappy 源码的native包

    - 安装Snappy库:Hadoop需要链接到Snappy库才能支持Snappy压缩,可以通过`yum install -y libsnappy-devel`命令安装。 2. **获取源码**: - 下载Hadoop源码:从Apache官网或其他镜像站点下载Hadoop 2.5.0的源码包...

    CDH集群安装前置准备及检查,CDH集群安装5.11.2版本

    4. **安装CDH组件**: 使用`yum install`或`apt-get install`命令安装所需组件,如Hadoop、HBase、Spark等。 5. **配置集群**: 编辑配置文件,如`hadoop-env.sh`、`core-site.xml`等,设置集群参数。 6. **启动服务**...

    REDHAT7.2 安装 CDH5.10 和 Kudu1.2

    在本文中,我们将详细探讨在REDHAT7.2操作系统上安装Cloudera Distribution including Apache Hadoop(CDH)5.10版本以及Kudu1.2的过程。这个过程将分为几个关键步骤,从前期准备到集群的完整性检查,都包含在内。 ...

    大数据【经典文档】:CDH集群部署安装运维手册【61页】.docx

    《大数据经典文档:CDH集群部署安装运维手册》是一份详尽的指南,旨在帮助IT专业人士成功地在企业环境中部署、管理和维护Cloudera Data Hub(CDH)集群。CDH是一个全面的大数据处理平台,它包含了一系列开源项目,如...

    hadoop集群内lzo的安装与配置.doc

    【Hadoop集群LZO安装与配置】 在大数据处理领域,Hadoop是一个广泛使用的开源框架,而LZO是一种高效的压缩算法,常用于Hadoop集群中,以减少数据存储和传输的开销。本文将详细介绍如何在运行CentOS 5.5且安装了...

    大数据【经典文档】:CDH集群运维手册【61页】.docx

    《大数据经典文档:CDH集群运维手册》是针对大数据领域中Cloudera Distribution Including Hadoop (CDH)集群运维的专业指南。本手册详尽地介绍了如何有效地管理和维护CDH集群,确保系统的稳定运行和高效性能。 一、...

    centos7安装CDH5.X.X

    3. **安装CDH组件**:选择你需要的CDH组件进行安装,例如Hadoop、HBase、Hive等: ``` [root@localhost ~]# yum install -y cdh5-hadoop cdh5-hbase cdh5-hive ``` 4. **配置CDH**:安装完成后,需要配置各个...

    基于cloudera搭建hadoop集群

    2. 安装cdh 22 六. 卸载 33 七. 参数调整 33 1. Mapreduce 33 2. Hdfs 34 3. Hbase 34 4. hive 35 5. Oozie 35 八. 常用命令 37 1. 安全模式 37 2. 查看block大小 37 九. 其他 37 1. 修改修改centos bogon主机...

Global site tag (gtag.js) - Google Analytics