Hadoop 2.7.2完全分布式的搭建

    • hadoopmaster 192.168.1.159
    • hadoopslave1 192.168.1.76
    • hadoopslave2 192.168.1.166

    2 软件环境

    • JDK 7U79
    • Hadoop 2.7.2

    二 hadoopmaster主机配置

    1 JDK设置

    1. export JRE_HOME=${JAVA_HOME}/jre
    2. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    3. export PATH=${JAVA_HOME}/bin:$PATH

    这里面有一个小的体验技巧,我建议将所有需要的环境变量配置加入到/etc/profile中,这是全局变量.

    1. export JAVA_HOME=/usr/lib/jvm/
    2. export JRE_HOME=${JAVA_HOME}/jre
    3. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    4. export PATH=${JAVA_HOME}/bin:$PATH
    5. export JAVA_HOME=/usr/lib/jvm/
    6. export HADOOP_INSTALL=/usr/local/hadoop
    7. export PATH=$PATH:$HADOOP_INSTALL/bin
    8. export PATH=$PATH:$JAVA_HOME/bin
    9. export PATH=$PATH:$HADOOP_INSTALL/sbin
    10. export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
    11. export HADOOP_COMMON_HOME=$HADOOP_INSTALL
    12. export HADOOP_HDFS_HOME=$HADOOP_INSTALL
    13. export YARN_HOME=$HADOOP_INSTALL
    14. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
    15. export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

    还有一个问题就是,在启动hadoop的时候经常会出现,找不到JAVA_HOME的问题,这个问题可以通过修改hadoop环境变量来解决,直接写死变量就可以了.

    测试环境变量是不是生效

    1. chu888chu888@hadoopmaster:/usr/lib/jvm$ source /etc/profile
    2. chu888chu888@hadoopmaster:/usr/lib/jvm$ env
    3. XDG_SESSION_ID=1
    4. TERM=xterm-256color
    5. SHELL=/bin/bash
    6. SSH_CLIENT=192.168.1.23 49818 22
    7. OLDPWD=/home/chu888chu888
    8. SSH_TTY=/dev/pts/0
    9. JRE_HOME=/usr/lib/jvm//jre
    10. USER=chu888chu888
    11. LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
    12. MAIL=/var/mail/chu888chu888
    13. PATH=/usr/lib/jvm//bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    14. PWD=/usr/lib/jvm
    15. JAVA_HOME=/usr/lib/jvm/
    16. LANG=en_US.UTF-8
    17. SHLVL=1
    18. HOME=/home/chu888chu888
    19. LANGUAGE=en_US:en
    20. LOGNAME=chu888chu888
    21. CLASSPATH=.:/usr/lib/jvm//lib:/usr/lib/jvm//jre/lib
    22. SSH_CONNECTION=192.168.1.23 49818 192.168.1.159 22
    23. LESSOPEN=| /usr/bin/lesspipe %s
    24. XDG_RUNTIME_DIR=/run/user/1000
    25. LESSCLOSE=/usr/bin/lesspipe %s %s
    26. _=/usr/bin/env
    27. chu888chu888@hadoopmaster:/usr/lib/jvm$ java -version
    28. java version "1.7.0_79"
    29. Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
    30. Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
    31. chu888chu888@hadoopmaster:/usr/lib/jvm$

    2 IP设置

    1. chu888chu888@hadoopmaster:/etc/network$ ls
    2. if-down.d if-post-down.d if-pre-up.d if-up.d interfaces interfaces.d run
    3. chu888chu888@hadoopmaster:/etc/network$ sudo nano interfaces

    interfaces的内容如下

    1. auto lo
    2. iface lo inet loopback
    3. auto eth0
    4. iface eth0 inet static
    5. address 192.168.1.159
    6. netmask 255.255.255.0
    7. gateway 192.168.1.1

    /etc/resolv.conf的内容

    1. nameserver 192.168.1.1

    3 Hadoop相关环境变量的设置

    1. 创建hadoop用户组
    2. 创建hadoop用户
    3. chu888chu888@hadoopmaster:~$ sudo addgroup hadoop
    4. [sudo] password for chu888chu888:
    5. Adding group `hadoop' (GID 1001) ...
    6. Done.
    7. chu888chu888@hadoopmaster:~$ sudo adduser -ingroup hadoop hadoop
    8. Adding user `hadoop' ...
    9. Adding new user `hadoop' (1001) with group `hadoop' ...
    10. Creating home directory `/home/hadoop' ...
    11. Copying files from `/etc/skel' ...
    12. Enter new UNIX password:
    13. Retype new UNIX password:
    14. passwd: password updated successfully
    15. Changing the user information for hadoop
    16. Enter the new value, or press ENTER for the default
    17. Full Name []:
    18. Room Number []:
    19. Work Phone []:
    20. Home Phone []:
    21. Is the information correct? [Y/n] y
    22. hadoop用户添加权限,打开/etc/sudoers文件
    23. root ALL=(ALL:ALL) ALL
    24. hadoop ALL=(ALL:ALL) ALL

    4 hosts文件修改

    所有的主机的hosts都需要修改,在这里我吃了一个大亏,如果在etc配置文件中直接用Ip的话,可能会出现Datanode链接不上Namenode的现象.

    1. 127.0.0.1 localhost
    2. 192.168.1.159 hadoopmaster
    3. 192.168.1.76 hadoopslave1
    4. 192.168.1.166 hadoopslave2

    5 SSH无密码登录

    步骤一用ssh-key-gen在hadoopmaster主机上创建公钥与密钥

    1. 需要注意一下,一定要用hadoop用户生成公钥,因为我们是免密钥登录用的是hadoop
    2. hadoop@hadoopmaster:~$ ssh-keygen -t rsa
    3. Generating public/private rsa key pair.
    4. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
    5. Created directory '/home/hadoop/.ssh'.
    6. Enter passphrase (empty for no passphrase):
    7. Enter same passphrase again:
    8. Your identification has been saved in /home/hadoop/.ssh/id_rsa.
    9. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
    10. The key fingerprint is:
    11. cf:98:06:01:29:81:ff:82:5b:d3:6d:5d:53:b6:a7:75 hadoop@hadoopmaster
    12. The key's randomart image is:
    13. +--[ RSA 2048]----+
    14. | ..... |
    15. |. . .. o |
    16. | . . . o . |
    17. | . o ...S. . + . |
    18. |. + o o..= . |
    19. | o o . + o |
    20. |. . |
    21. | |
    22. +-----------------+

    步骤二保证hadoopmaster登录自已是有效的

    1. cd .ssh
    2. cat ./id_rsa.pub >> ./authorized_keys

    步骤三将公钥拷贝到其他主机上

    1. scp ~/.ssh/id_rsa.pub hadoop@hadoopslave1:/home/hadoop/
    2. scp ~/.ssh/id_rsa.pub hadoop@hadoopslave2:/home/hadoop/

    步骤四 在其他二个节点上做的工作

    1. mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略
    2. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    3. rm ~/id_rsa.pub # 用完就可以删掉了

    6 资源限制配置

    此步骤要求在hadoopmaster hadoopslave1 hadoopslave2都要进行配置,以防止处理达到机器文件上限

    1通过修改/etc/security/limits.conf追击参数进行配置

    HBASE和其他的数据库软件一样会同时打开很多文件,Linux默认的ulimit值是1024,这对HBASE来说太小了,当使用诸如bulkload这种工具导入数据的时候会得到这样的异常信息:java.io.IOException:Too many open files.我们需要改变这个值.这是对操作系统的操作,而不是通过HBASE配置文件完成的,我们可以大致估算ulimit值需要配置为多大,例如:每个列族至少有一个存储文件(HFile),每个被加载的Region可能管理多达5或6个列族所对应的存储文件,用于存储文件个数乘于列族数再乘以每个RegionServer中的RegIon数量得到RegionServer主机管理的存储文件数量.假如每个Region有3个列族,每个列族平均有3个存储文件,每个RegionServer有100个region,将至少需要33100=900个文件.这些存储文件会被客户端大量的操作,涉及大量的磁盘操作.

    2 通过修改 hdfs-site.xml解决同时处理文件上限的参数
    Hadoop的Datanode有一个用于设置同时处理文件的上限个数的参数,这个参数叫xcievers,在启动之前,先确认有没有配置hadoop的这个参数,默认值是256,这对于一个任务很多的集群来说,实在太小了.

    1. <property>
    2. <name>dfs.datanode.max.xcievers</name>
    3. <value>12500</value>
    4. </property>

    三 hadoopslave1 2主机配置

    2 IP设置

    同上

    3 Hadoop相关环境变量的设置

    同上

    4 hosts文件修改

    同上

    5 SSH无密码登录

    同上

    1 安装

    以下操作都要以hadoop用户身份进行

    1. chu888chu888@hadoopslave1:~$ sudo tar xvfz jdk-7u79-linux-x64.gz
    2. hadoop@hadoopmaster:~$ sudo cp -r hadoop-2.7.2 /usr/local/hadoop
    3. hadoop@hadoopmaster:~$ sudo chmod -R 775 /usr/local/hadoop/
    4. hadoop@hadoopmaster:~$ sudo chown -R hadoop:hadoop /usr/local/hadoop

    这里面有一个小的体验技巧,我建议将所有需要的环境变量配置加入到/etc/profile中,这是全局变量.

    1. export JAVA_HOME=/usr/lib/jvm/
    2. export JRE_HOME=${JAVA_HOME}/jre
    3. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    4. export PATH=${JAVA_HOME}/bin:$PATH
    5. export JAVA_HOME=/usr/lib/jvm/
    6. export HADOOP_INSTALL=/usr/local/hadoop
    7. export PATH=$PATH:$HADOOP_INSTALL/bin
    8. export PATH=$PATH:$JAVA_HOME/bin
    9. export PATH=$PATH:$HADOOP_INSTALL/sbin
    10. export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
    11. export HADOOP_COMMON_HOME=$HADOOP_INSTALL
    12. export HADOOP_HDFS_HOME=$HADOOP_INSTALL
    13. export YARN_HOME=$HADOOP_INSTALL
    14. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
    15. export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

    还有一个问题就是,在启动hadoop的时候经常会出现,找不到JAVA_HOME的问题,这个问题可以通过修改hadoop环境变量来解决,直接写死变量就可以了.

    1. hadoop@hadoopmaster:/usr/local/hadoop/etc/hadoop$ ls
    2. capacity-scheduler.xml hadoop-metrics2.properties httpfs-signature.secret log4j.properties ssl-client.xml.example
    3. configuration.xsl hadoop-metrics.properties httpfs-site.xml mapred-env.cmd ssl-server.xml.example
    4. container-executor.cfg hadoop-policy.xml kms-acls.xml mapred-env.sh yarn-env.cmd
    5. core-site.xml hdfs-site.xml kms-env.sh mapred-queues.xml.template yarn-env.sh
    6. hadoop-env.cmd httpfs-env.sh kms-log4j.properties mapred-site.xml.template yarn-site.xml
    7. hadoop-env.sh httpfs-log4j.properties kms-site.xml slaves
    8. hadoop@hadoopmaster:/usr/local/hadoop/etc/hadoop$ sudo nano hadoop-env.sh
    9. $ more hadoop-env.sh
    10. export JAVA_HOME=/usr/lib/jvm/

    2 配置集群环境

    集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

    3 配置文件内容-slaves

    文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 hadoopmaster 节点仅作为 NameNode 使用。
    本教程让 hadoopmaster 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加二行内容:hadoopslave1 hadoopslave2。

    1. hadoop@hadoopmaster:/usr/local/hadoop/etc/hadoop$ more slaves
    2. hadoopslave1
    3. hadoopslave2
    1. <configuration>
    2. <property>
    3. <name>fs.defaultFS</name>
    4. <value>hdfs://hadoopmaster:9000</value>
    5. </property>
    6. <property>
    7. <name>hadoop.tmp.dir</name>
    8. <value>file:/usr/local/hadoop/tmp</value>
    9. <description>Abase for other temporary directories.</description>
    10. </property>
    11. </configuration>

    5 配置文件内容 hdfs-site.xml

    dfs.replication 一般设为 3,但我们只有二个 Slave 节点,所以 dfs.replication 的值还是设为 2:

    1. <configuration>
    2. <property>
    3. <name>dfs.namenode.secondary.http-address</name>
    4. <value>hadoopmaster:50090</value>
    5. </property>
    6. <property>
    7. <name>dfs.replication</name>
    8. <value>2</value>
    9. </property>
    10. <property>
    11. <name>dfs.namenode.name.dir</name>
    12. <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    13. </property>
    14. <property>
    15. <name>dfs.datanode.data.dir</name>
    16. <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    17. </property>
    18. </configuration>

    6 配置文件 - mapred-site.xml

    (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:

    1. <configuration>
    2. <property>
    3. <name>mapreduce.framework.name</name>
    4. <value>yarn</value>
    5. </property>
    6. <property>
    7. <name>mapreduce.jobhistory.address</name>
    8. <value>hadoopmaster:10020</value>
    9. </property>
    10. <property>
    11. <name>mapreduce.jobhistory.webapp.address</name>
    12. <value>hadoopmaster:19888</value>
    13. </property>
    14. </configuration>

    7 配置文件 - yarn-site.xml

    1. <configuration>
    2. <name>yarn.resourcemanager.hostname</name>
    3. <value>hadoopmaster</value>
    4. </property>
    5. <property>
    6. <name>yarn.nodemanager.aux-services</name>
    7. <value>mapreduce_shuffle</value>
    8. </property>
    9. </configuration>

    五 hadoopslave1 2节点需要做的

    首先通过sftp把hadoop配置好的hadoop打包,之后转输到Slave节点上,配置好环境变量JDK PATH SSH 基本上与Master是一样的.
    配置好后,将 Master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。
    在 Master 节点上执行:

    1. cd /usr/local
    2. sudo rm -r ./hadoop/tmp
    3. sudo rm -r ./hadoop/logs/*
    4. tar -cvfz ~/hadoop.master.tar.gz ./hadoop

    在Slave节点上执行:

    1. sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
    2. sudo tar -xvfz ~/hadoop.master.tar.gz -C /usr/local

    六 开始启动集群

    1. hdfs namenode -format # 首次运行需要执行初始化,之后不需要
    2. Master上执行:
    3. $start-dfs.sh
    4. $start-yarn.sh
    5. $mr-jobhistory-daemon.sh start historyserver
    6. Centos6.X需要关闭防火墙
    7. sudo service iptables stop # 关闭防火墙服务
    8. sudo chkconfig iptables off # 禁止防火墙开机自启,就不用手动关闭了
    9. Cent7
    10. systemctl stop firewalld.service # 关闭firewall
    11. systemctl disable firewalld.service # 禁止firewall开机启动

    之后分别在Master与Slave上执行jps,会看到不同的结果.缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。例如我这边一共有 1 个 Datanodes:

    1. 执行分布式实例过程与伪分布式模式一样,首先创建 HDFS 上的用户目录:
    2. $ hdfs dfs -mkdir -p /user/hadoop
    3. /usr/local/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中:
    4. $ hdfs dfs -mkdir input
    5. $ hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

    通过查看 DataNode 的状态(占用大小有改变),输入文件确实复制到了 DataNode 中,如下图所示:

    八 执行分布式的实验-MapReduce

    执行MapReduce作业

    1. hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'
    2. 查看http://192.168.1.159:8088/cluster看结果

    运行时的输出信息与伪分布式类似,会显示 Job 的进度。

    可能会有点慢,但如果迟迟没有进度,比如 5 分钟都没看到进度,那不妨重启 Hadoop 再试试。若重启还不行,则很有可能是内存不足引起,建议增大虚拟机的内存,或者通过更改 YARN 的内存配置解决。
    同样可以通过 Web 界面查看任务进度 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息,如下图所示:

    3. Hadoop 2.7.2完全分布式 - 图1

    1. 关闭集群
    2. stop-yarn.sh
    3. stop-dfs.sh
    4. mr-jobhistory-daemon.sh stop historyserver

    九 同步时间

    在安装hadoop环境的过程中,时间同步是非常重要的一个服务.因为分布式系统如果时间不同步会造成系统中的许多问题.

    1 在线安装

    ntp在线安装的方式很简单,只需要执行以下命令即可帮你安装好ntp以及所有的依赖包

    1. sudo apt-get install ntp

    2 离线安装

    如果要离线安装,那么就需要下载ntp安装包和依赖包。我们可以在一个有线环境下运行上面的在线安装,然后到/var/cache/apt/archives这个目录下拷贝完整的ntp安装包和依赖包。

    1. dpkg -i libopts25_1%3a5.12-0.1ubuntu1_amd64.deb
    2. dpkg -i ntp_1%3a4.2.6.p3+dfsg-1ubuntu3.1_amd64.deb

    当然还有更加简单的方法,将下载的deb包拷贝到/var/cache/apt/archives目录下,然后在执行一下命令同样可以安装。

    1. sudo apt-get install ntp

    安装完毕以后我们可以查看服务是否启动,执行以下命令:

    1. hadoop@hadoopmaster:~$ sudo service --status-all
    2. [ + ] acpid
    3. [ + ] apparmor
    4. [ ? ] apport
    5. [ + ] atd
    6. [ ? ] console-setup
    7. [ + ] cron
    8. [ - ] dbus
    9. [ ? ] dns-clean
    10. [ + ] friendly-recovery
    11. [ - ] grub-common
    12. [ ? ] irqbalance
    13. [ ? ] killprocs
    14. [ ? ] kmod
    15. [ ? ] networking
    16. [ + ] ntp
    17. [ ? ] ondemand
    18. [ ? ] pppd-dns
    19. [ - ] procps
    20. [ ? ] rc.local
    21. [ + ] resolvconf
    22. [ - ] rsync
    23. [ + ] rsyslog
    24. [ ? ] screen-cleanup
    25. [ ? ] sendsigs
    26. [ - ] ssh
    27. [ - ] sudo
    28. [ + ] udev
    29. [ ? ] umountfs
    30. [ ? ] umountnfs.sh
    31. [ ? ] umountroot
    32. [ - ] unattended-upgrades
    33. [ - ] urandom

    可以看到ntp服务已经启动([+]表示已经启动。)

    3 配置文件 /etc/ntp.conf

    建议在配置之前进行备份

    1. driftfile /var/lib/ntp/ntp.drift
    2. statistics loopstats peerstats clockstats
    3. filegen loopstats file loopstats type day enable
    4. filegen peerstats file peerstats type day enable
    5. filegen clockstats file clockstats type day enable
    6. server ntp.ubuntu.com
    7. restrict -4 default kod notrap nomodify nopeer noquery
    8. restrict -6 default kod notrap nomodify nopeer noquery
    9. restrict 192.168.1.0 mask 255.255.255.0 nomodify
    10. restrict 127.0.0.1
    11. restrict ::1

    4 同步时间

    1. sudo ntpdate 192.168.1.159
    1. hadoop@hadoopmaster:~$ start-dfs.sh
    2. 16/07/18 20:45:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    3. Starting namenodes on [hadoopmaster]
    4. hadoopmaster: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-hadoopmaster.out
    5. hadoopslave1: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-hadoopslave1.out
    6. hadoopslave2: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-hadoopslave2.out
    7. Starting secondary namenodes [hadoopmaster]
    8. hadoopmaster: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-hadoopmaster.out
    9. 16/07/18 20:45:20 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    解决方法

    1. 首先下载hadoop-native-64-2.4.0.tar
    2. http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.4.0.tar
    3. 如果你是hadoop2.6的可以下载下面这个:
    4. http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar
    5. 下载完以后,解压到hadoopnative目录下,覆盖原有文件即可。操作如下:
    6. tar -x hadoop-native-64-2.4.0.tar -C hadoop/lib/native/
    7. 再将环境变量导入到系统中.修改/etc/profile
    8. export JAVA_LIBRARY_PATH=/usr/local/hadoop/lib/native

    时钟不正确的问题

    1. fatal org.apache.hadoop.hbase.regionserver.hregionserver: master rejected startup because clock is out of sync
    2. org.apache.hadoop.hbase.clockoutofsyncexception: org.apache.hadoop.hbase.clockoutofsyncexception: server suc-pc,60020,1363269953286 has been rejected; reported time is too far out of sync with master. time difference of 39375ms > max allowed of 30000ms
    3.   小问题,一看就知道错误发生在哪。在hbase中,允许小的时间偏差,但是上面39秒的时间偏差就有点大了。如果你是联网的话,可以用ntpdate 219.158.14.130进行同步。219.158.14.130是网通北京的时间服务器,如果不行你可以用别的服务器进行同步。

    zookeeper服务器未设置或者/etc/hosts设置有误(hbase)

    1. 2013-03-11 19:41:08,263 info org.apache.zookeeper.clientcnxn: opening socket connection to server localhost/127.0.0.1:2181. will not attempt to authenticate using sasl (unknown error)
    2. 2013-03-11 19:41:08,266 warn org.apache.zookeeper.clientcnxn: session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
    3. java.net.connectexception: 拒绝连接
    4. at sun.nio.ch.socketchannelimpl.checkconnect(native method)
    5. at sun.nio.ch.socketchannelimpl.finishconnect(socketchannelimpl.java:692)
    6. at org.apache.zookeeper.clientcnxnsocketnio.dotransport(clientcnxnsocketnio.java:350)
    7. at org.apache.zookeeper.clientcnxn$sendthread.run(clientcnxn.java:1068)
    8.   这个问题的出现,会伴随一个非常奇怪的现象。在master所在的pc上启动start-all时,内容提示所有的regionserver已经全部启动。但是,如果你去查看masterip60010时会发现其他的regionserver并没有启动,regionserver的数量只有一台。因为已经有一台regionserver是活着的,所以hbase还是能继续使用的,这
    9. 此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
    10. 会迷惑你。查看别的机器的日志后,你就会发现上述错误。zookeeper的定位居然定位到127.0.0.1去了,这个不科学。最后,查阅资料才发现hbase.zookeeper.quorum这个属性设置时,默认本机即为zookeeper服务器(单机使用)。这就很简单了,只需要增加这个属性就可以了。
    11. <property>
    12. <name>hbase.zookeeper.quorum</name>
    13. <value>10.82.58.213</value>
    14. </property>
    15.   参考:http://mail-archives.apache.org/mod_mbox/hbase-user/201106.mbox/%3cbanlktimcghr-1mdtdo3netzmrqxkbjy=da@mail.gmail.com%3e