centos7Hadoop安装配置

本文介绍centos7Hadoop安装配置以及一些个人发现的问题。

1、Hadoop伪分布式配置
这里推荐一篇专业文章:
http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/
按照所述步骤即可完成。
注意:

  1. 我这里是伪分布式配置,中间的单机分布配置请忽略。

  2. jdk配置因为个人安装版本以及使用终端的不同,配置参数也会不同。如果你使用的centos选择安装了jdk并且终端切换为了zsh,可以参考我的另一篇文章:https://blog.csdn.net/qq_43175022/article/details/105062508
    如果没有切换zsh,把需要打开的配置文件换成bashrc即可。生效也是。

  3. 安装Hadoop时,命令需要根据自己下载的版本修改,个人下载的是2.10.0版本,即把2.6.0换成2.10.0即可;同时上述网址提供的下载网站好像已经没有校验文件下载了,请忽略校验这一步。

  4. 配置伪分布式时,如果gedit无法使用,使用vi编辑器也是一样效果的;如果你已经修改了终端为zsh,同上,你需要打开的配置文件是zshrc,而不是bashrc,反之照常即可。

2、遇到的问题
1、启动Hadoop后,键入jps后,四个节点都需要有显示,若有一个节点没有显示,则Hadoop配置失败。具体错误可以参考上述专业文章内容里的查看日志文件方法;
其中,我遇到了DataNode的错误,可以参考这个链接解决:
https://blog.csdn.net/weixin_39076716/article/details/92793139
在这里插入图片描述
2、启动Hadoop的时输出的警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform
百度大多都是在以 ldd libhadoop.so.1.0.0ldd库版本在说明问题,但是较新的Hadoop大多都不会有这个问题,当然,你也可以用这个方法排除一下,有以下文章:
https://blog.csdn.net/l1028386804/article/details/51538611

3、在伪分布式HDFS实例中,在完成第2步后键入hdfs dfs -ls时还出现以下警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable:
在/usr/local/hadoop/etc/hadoop/hadoop-env.sh 文件末尾添加:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

4、在伪分布式HDFS实例中,复制网页命令出现Unknown command:
如复制:./bin/hdfs dfs –mkdir –p /user/hadoop
出现:–mkdir: Unknown command

这可能是因为字符编码不一致,代码本身没有错,手动敲入就不会这个问题。

========================================================
更新:
1、上述配置过后,我在启动spark时,原警告依然存在,以下步骤来确定具体错误位置:

  1. 我们先打开一下Hadoop的调试信息显示:

    sudo vim /etc/profile
    

    在最后添加一行

    export HADOOP_ROOT_LOGGER=DEBUG,console
    

    生效一下

    source /etc/profile
    
  2. 查找具体错误信息
    按照上述blog完成安装Hadoop配置后,无法加载本地类库的警告,所以
    1、 进入Hadoop安装目录

    cd /usr/local/hadoop
    

    2、查看报错信息

    hadoop checknative -a
    

    3、完全按照上述配置Hadoop的话,应该会输出以下信息:

    Native library checking:
    hadoop:  false 
    zlib:    false 
    snappy:  false 
    lz4:     false 
    bzip2:   false 
    openssl: false 
    70/01/01 01:02:05 INFO util.ExitUtil: Exiting with status 1
    

    全为false,这是因为我们配置path字段少了两个重要的字段,所以:
    4、打开bashrc在原Hadoop字段下添加两行(如果终端为zsh则换成zshrc):

    vim ~/.bashrc
    

    添加:

    export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/:$LD_LIBRARY_PATH
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
    

    生效:

    source ~/.basherc
    

    5、安装基础类库:

    sudo yum install -y autoconf automake libtool
    sudo yum install -y gcc gcc-c++ cmake
    sudo yum install -y zlib-devel
    sudo yum install -y openssl-devel
    sudo yum install -y snappy snappy-devel
    sudo yum install -y bzip2 bzip2-devel
    

    6、再次检查本地类库:

    hadoop checknative -a
    

    此时大概率输出:

    Native library checking:
    hadoop:  true /usr/local/hadoop/lib/native/libhadoop.so.1.0.0
    zlib:    true /lib64/libz.so.1
    snappy:  true /usr/lib64/libsnappy.so.1
    zstd  :  false
    lz4:     true revision:10301
    bzip2:   true /lib64/libbz2.so.1
    openssl: true /usr/lib64/libcrypto.so
    

    我们就需要安装zstd:

    cd /usr/local
    sudo git clone -b master https://github.com/facebook/zstd.git
    cd zstd
    sudo make && make install
    zstd --version
    sudo cp -rf lib/*.so* /usr/local/hadoop/lib/native/
    

    安装完成后回到Hadoop安装目录再次验证hadoop checknative -a即可
    7、最好还是要安装protobuf
    具体步骤可以参考我的另一篇文章:
    https://blog.csdn.net/qq_43175022/article/details/105062508
    8、如果你的Linux没有安装glibc库,可能需要自己安装
    可以参考这篇博文:
    https://blog.csdn.net/daiqinge/article/details/83545443
    一般centos你选择开发环境安装的话,都会有
    验证是否安装;
    打开终端:

    ldd --version
    

    第一个即是版本信息。

========================================================

再更新
再完成了上述的调整后,还是出现了一些问题。下面是解决方法:

1、在开启了调试信息:export HADOOP_ROOT_LOGGER=DEBUG,console后,启动时出现类似的debug信息:

[hadoop@hadoop2 ~]$ hdfs dfs -ls /
17/01/13 14:04:39 DEBUG util.Shell: setsid exited with exit code 0
17/01/13 14:04:39 DEBUG conf.Configuration: parsing URL jar:file:/home/hadoop/app/hadoop-2.5.2/share/hadoop/common/hadoop-common-2.5.2.jar!/core-default.xml
17/01/13 14:04:39 DEBUG conf.Configuration: parsing input stream sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@6e90891
17/01/13 14:04:39 DEBUG conf.Configuration: parsing URL file:/home/hadoop/app/hadoop-2.5.2/etc/hadoop/core-site.xml
17/01/13 14:04:39 DEBUG conf.Configuration: parsing input stream java.io.BufferedInputStream@3021eb3f
17/01/13 14:04:40 DEBUG lib.MutableMetricsFactory: field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginSuccess with annotation @org.apache.hadoop.metrics2.annotation.Metric(value=[Rate of successful kerberos logins and latency (milliseconds)], about=, valueName=Time, type=DEFAULT, always=false, sampleName=Ops)
17/01/13 14:04:40 DEBUG lib.MutableMetricsFactory: field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginFailure with annotation @org.apache.hadoop.metrics2.annotation.Metric(value=[Rate of failed kerberos logins and latency (milliseconds)], about=, valueName=Time, type=DEFAULT, always=false, sampleName=Ops)
17/01/13 14:04:40 DEBUG lib.MutableMetricsFactory: field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.getGroups with annotation @org.apache.hadoop.metrics2.annotation.Metric(value=[GetGroups], about=, valueName=Time, type=DEFAULT, always=false, sampleName=Ops)
17/01/13 14:04:40 DEBUG impl.MetricsSystemImpl: UgiMetrics, User and group related metrics
17/01/13 14:04:41 DEBUG security.Groups:  Creating new Groups object
17/01/13 14:04:41 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
17/01/13 14:04:41 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /home/hadoop/app/hadoop-2.5.2/lib/native/libhadoop.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/hadoop/app/hadoop-2.5.2/lib/native/libhadoop.so)

这表示hadoop本地库与glibu库不一致
如果安装的centos版本较新,这并不会影响hadoop的使用
每次启动出现这样的debug信息会影响获取其他有用信息,所以最好完成了这一步后关闭这个调试信息显示。方法:重新进入profile文件,在上述第一次更新加的字段前加一个 # 号注释掉
但是如果这影响的这影响了你hadoop的使用,你可以参考以下文章解决:
https://blog.51cto.com/laowafang/1912345

2、启动hadoop时,出现以下字段:

connect to host localhost port 22: Connection refused

这个情况是因为配置ssh服务时,没有配置其随系统自启动,所以此时ssh服务未启动,以下命令启动:

service sshd start

但是这个方法治标不治本,下次重启后还是需要上述命令启动,比较麻烦
以下方法设置ssh随系统自启动:

su root    #root登陆
systemctl start sshd
systemctl enable sshd

3、安装hadoop3.0.0以上的hadoop版本时,在使用’hadoop checknative -a’命令检查本地库时,比2.0版本多了一个ISA-L加速库,可使用以下链接进行安装:
https://blog.csdn.net/sinat_28603977/article/details/105536003
(输入上述文章命令时,建议加上都sudo获得更大权限)
4、启动hadoop时,出现以下字段:

ssh: connect to host jancy port 22: Connection timed out

这里推荐一篇文章:https://blog.csdn.net/qq_22695001/article/details/103111072
我的是遇见了主机ping不同的情况。
5、启动hadoop时,出现以下字段:

Warning: Permanently added the ECDSA host key for IP address ‘192.168.x.x’

解决:删除~文件夹下.ssh目录下的know_hosts文件,把以前的centos6.7的ip删掉或改掉。
本人使用上述链接进行安装时,安装失败,若有解决方法麻烦告知,十分感谢

猜你喜欢

转载自blog.csdn.net/qq_43175022/article/details/105106505