使用ubuntu的时候,由于主机名方面的原因,连接的时候不够方便,打算尝试一下centos
在苹果电脑上,打算使用vmware fusion
前期准备:
centos 7.6 iso,可以在清华源下载
目标,在centos上可以编译出完整native library的hadoop
步骤1,更换软件源
使用清华的centos源,参考官方说明
使用vi编辑,yum makecache,即可
步骤2,安装open-vm-tools,与主机共享文件夹
首先在虚拟机界面打开共享文件夹功能,并指定要共享的文件夹
安装虚拟机通信的软件
yum install open-vm-tools
可以尝试使用命令列出共享文件夹,并挂载:
/usr/bin/vmware-hgfsclient
mkdir -p /mnt/hgfs
vmhgfs-fuse .host:/ /mnt/hgfs
也可以添加到/etc/fstab,开机自动挂载
sudo mkdir -p /mnt/hgfs
sudo chown <usrname>:<usergroup> /mnt/hgfs
getent group
在/etc/fstab添加一行:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,auto_unmount,defaults 0 0
以上的hgfs文件夹的owner,与uid/gid两个数值,要在系统的用户列表里确认
fstab参数解释参考链接,用户名及用户id列表参考链接
不知道是不是我自己拼写错了,开机进入紧急模式的话,可以把auto_unmount去掉就好了
相关内容在SO,还有未解决的提问,未妥善解决的提问
其他参考链接1,参考链接2,参考链接3
步骤3,下载安装java和maven
因为centos提供的java是openjdk,而maven版本是3.0,达不到3.3的需求,需要手动安装
下载jdk.tar.gz和maven.tar.gz放到共享文件夹中
在centos中,/opt目录下,分别对jdk和maven用tar xzf解压
创建文件夹链接,以便以后升级,直接升级软链接即可
ln -s jdk1.8.0_192 java-oracle
ln -s apache-maven-3.6.0 apache-maven
添加环境变量JAVA_HOME
export JAVA_HOME=/opt/java-oracle/
echo "export JAVA_HOME=/opt/java-oracle/" >> ~/.bashrc
添加本地的maven repo,把用户文件夹下的.m2文件夹添加到虚拟机共享文件夹
如果需要,在其中改好settings.xml,使用国内源,比如ali nexus,然后给虚拟机用:
ln -s /mnt/hgfs/.m2 ~/.m2
然后,把这几个命令使用alternatives添加到系统/bin/目录,以便直接运行命令
alternatives --install /bin/java java /opt/java-oracle/bin/java 1
alternatives --install /bin/javac javac /opt/java-oracle/bin/javac 1
alternatives --install /bin/jps jps /opt/java-oracle/bin/jps 1
alternatives --install /bin/mvn mvn /opt/apache-maven/bin/mvn 1
alternatives --install /bin/mvnDebug mvnDebug /opt/apache-maven/bin/mvnDebug 1
alternatives --install /bin/mvnyjp mvnyjp /opt/apache-maven/bin/mvnyjp 1
安装oracle java可参考链接,参考链接2,参考链接3,参考链接4
使用alternatives可以参考系统手册man或info,也可以参考链接
不手动解压安装,也可以尝试maven wrapper,好像不够方便
步骤4,安装编译需要的环境
对照ubuntu上的build-essentials,centos需要安装:
yum install gcc gcc-c++ make
其他hadoop需要的库中,zstd不在标准的repo,需要添加一个epel的repo
yum install epel-release
然后把epel的地址改为清华源,注意原来的/pub改完后没有了:
vim /etc/yum.repos.d/epel.repo
安装hadoop需要的库,比如:
yum install libzstd-devel snappy-devel bzip2-devel cmake protobuf-devel openssl-devel zlib-devel
有关epel的其他参考链接1,参考链接2
有关openssl-devel的参考链接
不使用epel就需要手动编译的提问
步骤5,解压并编译
在/opt目录使用tar xzf解压hadoop-2.9.2-src.tar.gz
mvn package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true
编译之后,把得到的hadoop-dist/target/hadoop-x.y.z/lib/native/libhadoop.so.1.0.0放到/opt/hadoop-x.y.z/lib/native/,就能圆满地bin/hadoop checknative了
另外,如果想用ifconfig但找不到,可以参考链接
网友评论