第一篇主要是整体的步骤,其实中间遇到很多问题,第二篇将遇到的问题全部列举下来: 1.1包不能加载警告
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
hadoop2.5.1官网上提供的已经是64位操作系统版本,但是仍然报这个错误
1.1.1测试本地库
[root@cluster3 ~]# export HADOOP_ROOT_LOGGER=DEBUG,console
[root@cluster3 script]# hadoop fs -text /usr/local/script/hdfile1.txt 14/11/01 10:58:15 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error:
java.lang.UnsatisfiedLinkError:
/usr/local/hadoop/hadoop-2.5.1/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6:
version `GLIBC_2.12' not found (required by
/usr/local/hadoop/hadoop-2.5.1/lib/native/libhadoop.so.1.0.0) 14/11/01 10:58:15 DEBUG util.NativeCodeLoader:
java.library.path=/usr/local/hadoop/hadoop-2.5.1/lib/native 14/11/01 10:58:15 WARN util.NativeCodeLoader: Unable to load
native-hadoop library for your platform... using builtin-java classes where applicable
14/11/01 10:58:15 DEBUG security.JniBasedUnixGroupsMappingWithFallback: Falling back to shell based
[root@cluster1 lib64]# ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 11 Oct 31 17:27 /lib64/libc.so.6 -> libc-2.5.so
可以看到上边要求的是glibc_2.12,所以需要升级glibc 1.1.2升级glibc
下载glibc
wget http://ftp.gnu.org/gnu/glibc/glibc-2.12.tar.bz2
下载glibc-linuxthreads
wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.bz2 解压
$tar -jxvf glibc-2.12.tar.bz2 $cd glibc-2.12
$tar -jxvf ../glibc-linuxthreads-2.5.tar.bz2 $cd ..
$export CFLAGS=\
./glibc-2.12.2/configure --prefix=/usr --disable-profile
--enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
checking for symlinks in /usr/include... ok
running configure fragment for nptl/sysdeps/x86_64
checking for .cfi_personality and .cfi_lsda pseudo-ops... no
configure: error: assembler too old, .cfi_personality support missing
$make
#make install
................... .....................
stubs[$2] = 1; } \\
END { for (s in stubs) print \ s }' > /usr/local/soft/hesiod/stubsT
mv -f /usr/local/soft/hesiod/stubsT /usr/local/soft/hesiod/stubs make[2]: Leaving directory `/usr/local/soft/glibc-2.14/hesiod' make subdir=sunrpc -C sunrpc ..=../ subdir_install
make[2]: Entering directory `/usr/local/soft/glibc-2.14/sunrpc' /usr/bin/install -c -m 644 rpc/netdb.h /usr/include/rpc/netdb.h /usr/bin/install -c -m 644
/usr/local/soft/sunrpc/rpcsvc/bootparam_prot.h /usr/include/rpcsvc/bootparam_prot.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/nlm_prot.h /usr/include/rpcsvc/nlm_prot.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/rstat.h /usr/include/rpcsvc/rstat.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/yppasswd.h /usr/include/rpcsvc/yppasswd.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/klm_prot.h /usr/include/rpcsvc/klm_prot.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/rex.h /usr/include/rpcsvc/rex.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/sm_inter.h /usr/include/rpcsvc/sm_inter.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/mount.h /usr/include/rpcsvc/mount.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/rusers.h /usr/include/rpcsvc/rusers.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/spray.h /usr/include/rpcsvc/spray.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/nfs_prot.h /usr/include/rpcsvc/nfs_prot.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/rquota.h /usr/include/rpcsvc/rquota.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/rpcsvc/key_prot.h /usr/include/rpcsvc/key_prot.h
/usr/bin/install -c -m 644 ../sysdeps/unix/sysv/linux/nfs/nfs.h /usr/include/nfs/nfs.h
/usr/bin/install -c -m 644 /usr/local/soft/sunrpc/librpcsvc.a /usr/lib64/librpcsvc.a
/usr/bin/install -c -m 644 etc.rpc /etc/rpc
/usr/bin/install -c /usr/local/soft/sunrpc/rpcgen /usr/bin/rpcgen.new mv -f /usr/bin/rpcgen.new /usr/bin/rpcgen
(cd /usr/local/soft/sunrpc/.; /usr/bin/objdump -h auth_none.os authuxprot.os bindrsvprt.os clnt_raw.os clnt_simp.os rpc_dtable.os getrpcport.os pmap_clnt.os pm_getmaps.os pmap_prot.os pmap_prot2.os pmap_rmt.os rpc_prot.os rpc_common.os rpc_cmsg.os svc_auth.os svc_authux.os svc_raw.os svc_simple.os xdr_float.os xdr_rec.os publickey.os authdes_prot.os des_crypt.os des_impl.os des_soft.os key_prot.os openchild.os rtime.os svcauth_des.os clnt_unix.os svc_unix.os create_xid.os auth_des.os auth_unix.os clnt_gen.os clnt_perr.os clnt_tcp.os clnt_udp.os get_myaddr.os key_call.os
netname.os pm_getport.os rpc_thread.os svc.os svc_tcp.os svc_udp.os xcrypt.os xdr_array.os xdr.os xdr_intXX_t.os xdr_mem.os xdr_ref.os xdr_sizeof.os xdr_stdio.os svc_run.os rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o rpc_tblout.o rpc_sample.o xbootparam_prot.o xnlm_prot.o xrstat.o
xyppasswd.o xklm_prot.o xrex.o xsm_inter.o xmount.o xrusers.o xspray.o xnfs_prot.o xrquota.o xkey_prot.o) | \\ gawk '/\\.gnu\\.glibc-stub\\./ { \\
sub(/\\.gnu\\.glibc-stub\\./, \, $2); \\ stubs[$2] = 1; } \\
END { for (s in stubs) print \ s }' > /usr/local/soft/sunrpc/stubsT
mv -f /usr/local/soft/sunrpc/stubsT /usr/local/soft/sunrpc/stubs make[2]: Leaving directory `/usr/local/soft/glibc-2.14/sunrpc' make subdir=nis -C nis ..=../ subdir_install
make[2]: Entering directory `/usr/local/soft/glibc-2.14/nis' /usr/bin/install -c /usr/local/soft/nis/libnsl.so /lib64/libnsl-2.14.so.new
mv -f /lib64/libnsl-2.14.so.new /lib64/libnsl-2.14.so echo libnsl-2.14.so /lib64/libnsl.so.1 >> /usr/local/soft/elf/symlink.list rm -f /usr/lib64/libnsl.so.new
/bin/sh ../scripts/rellns-sh /lib64/libnsl.so.1 /usr/lib64/libnsl.so.new
mv -f /usr/lib64/libnsl.so.new /usr/lib64/libnsl.so /usr/bin/install -c /usr/local/soft/nis/libnss_nis.so /lib64/libnss_nis-2.14.so.new
mv -f /lib64/libnss_nis-2.14.so.new /lib64/libnss_nis-2.14.so echo libnss_nis-2.14.so /lib64/libnss_nis.so.2 >> /usr/local/soft/elf/symlink.list rm -f /usr/lib64/libnss_nis.so.new
/bin/sh ../scripts/rellns-sh /lib64/libnss_nis.so.2 /usr/lib64/libnss_nis.so.new
mv -f /usr/lib64/libnss_nis.so.new /usr/lib64/libnss_nis.so /usr/bin/install -c /usr/local/soft/nis/libnss_nisplus.so /lib64/libnss_nisplus-2.14.so.new
mv -f /lib64/libnss_nisplus-2.14.so.new /lib64/libnss_nisplus-2.14.so echo libnss_nisplus-2.14.so /lib64/libnss_nisplus.so.2 >> /usr/local/soft/elf/symlink.list
rm -f /usr/lib64/libnss_nisplus.so.new
/bin/sh ../scripts/rellns-sh /lib64/libnss_nisplus.so.2 /usr/lib64/libnss_nisplus.so.new
mv -f /usr/lib64/libnss_nisplus.so.new /usr/lib64/libnss_nisplus.so /usr/bin/install -c /usr/local/soft/nis/libnss_compat.so /lib64/libnss_compat-2.14.so.new
mv -f /lib64/libnss_compat-2.14.so.new /lib64/libnss_compat-2.14.so echo libnss_compat-2.14.so /lib64/libnss_compat.so.2 >> /usr/local/soft/elf/symlink.list
rm -f /usr/lib64/libnss_compat.so.new
/bin/sh ../scripts/rellns-sh /lib64/libnss_compat.so.2 /usr/lib64/libnss_compat.so.new
mv -f /usr/lib64/libnss_compat.so.new /usr/lib64/libnss_compat.so /usr/bin/install -c -m 644 /usr/local/soft/nis/libnsl.a /usr/lib64/libnsl.a
(cd /usr/local/soft/nis/.; /usr/bin/objdump -h nis_hash.o nis_hash.os yp_xdr.o ypclnt.o ypupdate_xdr.o nis_subr.o nis_local_names.o
nis_free.o nis_file.o nis_print.o nis_error.o nis_call.o nis_lookup.o nis_table.o nis_xdr.o nis_server.o nis_ping.o nis_checkpoint.o nis_mkdir.o nis_rmdir.o nis_getservlist.o nis_verifygroup.o nis_ismember.o nis_addmember.o nis_util.o nis_removemember.o nis_creategroup.o nis_destroygroup.o nis_print_group_entry.o
nis_domain_of.o nis_domain_of_r.o nis_modify.o nis_remove.o nis_add.o nis_defaults.o nis_findserv.o nis_callback.o nis_clone_dir.o
nis_clone_obj.o nis_clone_res.o nss-default.o yp_xdr.os ypclnt.os
ypupdate_xdr.os nis_subr.os nis_local_names.os nis_free.os nis_file.os nis_print.os nis_error.os nis_call.os nis_lookup.os nis_table.os
nis_xdr.os nis_server.os nis_ping.os nis_checkpoint.os nis_mkdir.os nis_rmdir.os nis_getservlist.os nis_verifygroup.os nis_ismember.os nis_addmember.os nis_util.os nis_removemember.os nis_creategroup.os nis_destroygroup.os nis_print_group_entry.os nis_domain_of.os nis_domain_of_r.os nis_modify.os nis_remove.os nis_add.os
nis_defaults.os nis_findserv.os nis_callback.os nis_clone_dir.os nis_clone_obj.os nis_clone_res.os nss-default.os nis-proto.os nis-service.os nis-hosts.os nis-network.os nis-grp.os nis-pwd.os nis-rpc.os nis-ethers.os nis-spwd.os nis-netgrp.os nis-alias.os nis-publickey.os nis-initgroups.os nss-nis.os nisplus-proto.os
nisplus-service.os nisplus-hosts.os nisplus-network.os nisplus-grp.os nisplus-pwd.os nisplus-rpc.os nisplus-ethers.os nisplus-spwd.os nisplus-netgrp.os nisplus-alias.os nisplus-publickey.os
nisplus-parser.os nss-nisplus.os nisplus-initgroups.os compat-grp.os compat-pwd.os compat-spwd.os compat-initgroups.os) | \\ gawk '/\\.gnu\\.glibc-stub\\./ { \\
sub(/\\.gnu\\.glibc-stub\\./, \, $2); \\ stubs[$2] = 1; } \\
END { for (s in stubs) print \ s }' > /usr/local/soft/nis/stubsT
mv -f /usr/local/soft/nis/stubsT /usr/local/soft/nis/stubs make[2]: Leaving directory `/usr/local/soft/glibc-2.14/nis' make subdir=nscd -C nscd ..=../ subdir_install
make[2]: Entering directory `/usr/local/soft/glibc-2.14/nscd' /usr/bin/install -c /usr/local/soft/nscd/nscd /usr/sbin/nscd.new mv -f /usr/sbin/nscd.new /usr/sbin/nscd
(cd /usr/local/soft/nscd/.; /usr/bin/objdump -h nscd_getpw_r.o nscd_getgr_r.o nscd_gethst_r.o nscd_getai.o nscd_initgroups.o nscd_getserv_r.o nscd_helper.o nscd_getpw_r.os nscd_getgr_r.os
nscd_gethst_r.os nscd_getai.os nscd_initgroups.os nscd_getserv_r.os nscd_helper.os nscd.o connections.o pwdcache.o getpwnam_r.o getpwuid_r.o grpcache.o getgrnam_r.o getgrgid_r.o hstcache.o gethstbyad_r.o gethstbynm3_r.o getsrvbynm_r.o getsrvbypt_r.o servicescache.o dbg_log.o nscd_conf.o nscd_stat.o cache.o mem.o
nscd_setup_thread.o xmalloc.o xstrdup.o aicache.o initgrcache.o gai.o res_hconf.o) | \\
gawk '/\\.gnu\\.glibc-stub\\./ { \\
sub(/\\.gnu\\.glibc-stub\\./, \, $2); \\ stubs[$2] = 1; } \\
END { for (s in stubs) print \ s }' > /usr/local/soft/nscd/stubsT
mv -f /usr/local/soft/nscd/stubsT /usr/local/soft/nscd/stubs make[2]: Leaving directory `/usr/local/soft/glibc-2.14/nscd' make subdir=streams -C streams ..=../ subdir_install