本帖最后由 pig2 于 2014-4-6 23:31 编辑
c​d​h​ 源​码​搭​建​h​b​a​s​e​开​发​环境
zoo.cfg的作用是什么?
开发环境中zookeeper配置 配置那些内容?
hbase配置需要修改那些内容?
如果配置完成之后mapreduce不工作,有可能是因为端口被其他服务占用,尝试修改端口重启 ?
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,执行命令:
ssh-keygen -t dsa
提示Enter passphrase时留空,直接回车。
在/root/.ssh目录下生成了两个文件id_dsa, id_dsa.pub,将其中的 id_dsa.pub通过scp命令复制到服务器端的root目录下,命名为public_key
scp ~/.ssh/id_dsa.pub root@192.168.10.201 :public_key 服务器端配置:
用root登陆服务器端CentOS,将刚才从客户端复制过来的public_key文件的内容附加到~/.ssh/authorized_keys文件后面,顺便删除public_key。
cat ~/public_key>> ~/.ssh/authorized_keys rm ~/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> 复制代码
注意:dfs.replication备份数根据实际情况配置
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>
<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>
复制代码
注意:如果配置完成之后mapreduce不工作,有可能是因为端口被其他服务占用,尝试修改端口重启
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 复制代码
8. hadoop配置完成,格式化文件系统 ./bin/hdfsnamenode -format 9. 启动hadoop ./sbin/start-all.sh
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
注意:zookeeper根据需要配置,hbase自带有zk,所以这项可以不配置,只需要将export HBASE_MANAGES_ZK=true就ok了
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文件拷贝过来
党毅飞