分类:
2012-12-13 16:03:56
原文地址:搭建简单的hadoop 分布式存储环境 作者:stef9k
这两天在Ubuntu Server 12.04下搭建了两个套分布式存储环境:hadoop和glusterfs。
分别简单测试了一下性能,说是性能测试,其实离真实性能测试还有不少距离,但是基本能了解这两种架构大概能跑到多少的数据心里有底了。
首先规划节点:
namenode:192.168.4.175
datanode:192.168.4.176-178 三台
测试机器:192.168.4.200
配置这5台机器的/etc/hosts,使每台设备都能相互通过IP和主机名进行解析。
ssh的配置,因为namenode需要通过ssh key认证,在运行中对从节点进行控制,所以通过生成的rsa key文件进行认证:
$ ssh-keygen -t rsa 一路enter 到底
$ cd /root/.ssh/
$ cp id_rsa.pub authorized_keys 并将authorized_keys 拷贝到规划中的每台节点上的相同用户目录下。
安装java默认环境:
$ apt-get install default-jdk
安装hadoop:
apt-get install hadoop 或者 dpkg -i hadoop_1.1.1-1_x86_64.deb
这样安装的hadoop配置文件存放在/etc/hadoop/下,其中最重要的四个:
mapred-site.xml,core-site.xml,hadoop-env.sh,hdfs-site.xml以及masters和slaves设置name节点和数据节点。
hadoop-env.sh主要设置一下java的环境变量:
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
core-site.xml 设置了访问端口和hadoop自身运行的tmp文件目录:
mapred-site.xml 设置了job节点:
hdfs-site.xml 设置了hdfs文件系统的部署配置:
masters:
nematode
slaves:
三个数据节点
将以上6个配置文件都拷贝到环境的每台机器上;
在namenode上运行hadoop:
$ hadoop namenode -format
$ start-all.sh
$ hadoop fs -put /dev/zero hd1 测试写入
这样hadoop就运行成功了
测试hadoop fuse
$ apt-get install ant
$ apt-get install libfuse-dev
$ apt-get install g++ make
$ apt-get install cmake
$ apt-get install maven2
$ apt-get install autotool
$ apt-get install autoconf
$ apt-get install libtool 这个包含 autoreconf
在hadoop源码目录下:
$ ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
autoconf不能依赖,可能会有产生如下编译语法错误,将链接的库生成到了目标文件前面。
$ gcc -Wall -g -Wall -O3 -o fuse_dfs fuse_dfs.o fuse_options.o fuse_trash.o fuse_stat_struct.o fuse_users.o fuse_init.o fuse_connect.o fuse_impls_access.o fuse_impls_chmod.o fuse_impls_chown.o fuse_impls_create.o fuse_impls_flush.o fuse_impls_getattr.o fuse_impls_mkdir.o fuse_impls_mknod.o fuse_impls_open.o fuse_impls_read.o fuse_impls_release.o fuse_impls_readdir.o fuse_impls_rename.o fuse_impls_rmdir.o fuse_impls_statfs.o fuse_impls_symlink.o fuse_impls_truncate.o fuse_impls_utimens.o fuse_impls_unlink.o fuse_impls_write.o -L/home/petru/work/ubeeko/hadoo.apache.org/0.23/hadoop-common/hadoop-hdfs-project/hadoop-hdfs/build/c /Linux-i386-32/lib -lhdfs
-L/lib -lfuse -L/usr/local/java/jdk/jre/lib/i386/server -ljvm
手动调整顺序编译申城fuse_dfs文件
需要修改一下此中的fuse_dfs执行路径和java,hadoop库路径,很重要
export OS_ARCH=amd64
export OS_BIT=64
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
export CLASSPATH=,:$JAVA_HOME/lib
export HADOOP_HOME=/opt/hadoop-1.1.1
export HADOOP_CONF_DIR=/etc/hadoop
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:$HADOOP_HOME/c++/Linux-$OS_ARCH-$OS_BIT/lib:/usr/local/lib:/usr/lib
$ chmod +x /opt/hadoop-1.1.1/src/contrib/fuse-dfs/src/fuse_dfs
$ chmod +x /opt/hadoop-1.1.1/src/contrib/fuse-dfs/src/fuse_dfs_wrapper.sh
$ ln -sf /opt/hadoop-1.1.1/src/contrib/fuse-dfs/src/fuse_dfs_wrapper.sh /usr/local/bin
$ ln -sf /opt/hadoop-1.1.1/src/contrib/fuse-dfs/src/fuse_dfs /usr/local/bin
$ fuse_dfs_wrapper.sh dfs://192.168.40.175:9000 /hadoop/fuse-dfs/ -d
这样就可以对挂载目录进行写入测试了。
参考文章:
参数列出了比较详细的一些。
利用Cloudera实现Hadoop 比较全面的安装文档
这个太全了。。。。