1. 准备工作
(1) 首先在cloudera的官网上下载CDH4的hadoop-2.0.0-cdh4.2.0、hbase-0.94.2-cdh4.2.0、zookeeper-3.4.5-cdh4.2.0的tar包
(2) 在安装hbase开发环境之前,先安装好java开发环境,配置好环境变量
(3) 准备三台主机,在用vi 打开/etc/sysconfig/network 修改HOSTNAME=master,其他两台主机分别作为slave1,slave2
(4) 在/etc/hosts中将添加将三台主机的ip和主机名的映射
192.168.10.200 master
192.168.10.201 slave1
192.168.10.202 slave2
(5) 在/etc/rc.d/rc.local中增加一些linux开机启动或关闭的服务
service sshd start 启动ssh服务
service iptables stop 关闭防火墙
(6) SSH设置
openssh可以实现客户端无密码访问服务端。 操作过程如下: 客户端和服务端系统都是CentOS,用户名都是root,都安装了openssh。 服务器端地址是192.168.10.201,客户端的地址是192.168.10.200 客户端配置: 用root登陆客户端CentOS,执行命令: 提示Enter passphrase时留空,直接回车。 在/root/.ssh目录下生成了两个文件id_dsa, id_dsa.pub,将其中的 id_dsa.pub通过scp命令复制到服务器端的root目录下,命名为public_key 服务器端配置: 用root登陆服务器端CentOS,将刚才从客户端复制过来的public_key文件的内容附加到~/.ssh/authorized_keys文件后面,顺便删除public_key。 如果服务器端是新装的系统,可能主目录下没有.ssh这个子目录,登陆一下其他的ssh服务器端,就会自动生成这个子目录和子目录下的文件。 之后从192.168.10.200的系统使用root账户登陆192.168.10.201就可以不用输入密码了 |
2. Hadoop配置
1. core-site-xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.native.lib.available</name>
<value>true</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
</property>
</configuration>
2. hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_31
3. hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
</configuration>
4. mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<property>
<name>mapred.map.java.opts</name>
<value>-Xmx1024m</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
</configuration>
5. slaves
master
slave1
slave2
6. yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8080</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8081</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8082</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:/root/hadoop/nmdata/local</value>
<description>thelocal directories used by the nodemanager</description>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>file:/root/hadoop/nmdata/log</value>
</property>
</configuration>
7. yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_31
export HADOOP_HOME=/root/hadoop/hadoop-2.0.0-cdh4.2.0
export HADOOP_PREFIX=${HADOOP_HOME}
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
export HADOOP_LIB=${HADOOP_HOME}/lib
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
3. zookeeper配置
将 conf 目录下的zoo-example.cfg 文件重命名为zoo.cfg,修改其中的内容如下
dataDir=/root/hadoop/zookeeper
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
dataDir 默认在/tmp下,系统重启会导致数据丢失。后面的三行在文件的末尾,每行描述一个节点。然后将配置好的Zookeeper 分发到server.1/2/3 的/root/hadoop/zookeeper-3.4.5-cdh4.2.0下,并在每一个节点的dataDir,即/root/hadoop/zookeeper下创建一个myid 文件,其中包含一个该节点对应的数字,即server.1/2/3 中'.'后面的数字,该数字应该在1-255 之间。在server.1/2/3 上分别启动 Zookeeper:
zkServer.sh start
4. hbase配置
1. hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_31
export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
export HBASE_MANAGES_ZK=false
export HADOOP_HOME=/root/hadoop/hadoop-2.0.0-cdh4.2.0
export HBASE_LOG_DIR=/root/hadoop/hbase-0.94.2-cdh4.2.0/logs
export HBASE_CLASSPATH=/root/hadoop/hadoop-2.0.0-cdh4.2.0/etc/hadoop
2. hbase-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>master:60000</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
</configuration>
3. regionservers
master
slave1
slave2
4. zoo.cfg
将刚配置的zookeeper的zoo.cfg拷贝过来
5. hdfs-site.xml
将刚配置的hadoop的hdfs-site.xml文件拷贝过来