zycchen 发表于 2016-12-5 09:06:53

虚拟机搭建hadoop集群

  整理文档下载地址:http://download.csdn.net/detail/ruishenh/6638309
  1.虚拟机安装系统(个人安装系统是centos 6.x final版)
  1.在虚拟机安装了三个系统(centos 6.x final版的)目前两个都是安装的,一个是在文件复制的。
  2. 安装完系统后开始安装rz命令包(由于系统在window系统用crt操作linux系统了,所以依赖上了rz命令)
  联网情况下:

yum install lrzsz
  接下来输入两个yes
  等到出现complete的英文就是ok了。
  3.卸载原装openJDK
  网上查的资料就是这样执行的,一切都运行完美通过
  先查看

rpm -qa | grep java

  显示如下信息:
  java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
  卸载:

rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
  只要是不报错,再执行

rpm -qa | grep java

  显示没有任何东西了就是ok了
  4.安装sun官方JDK文件
  由于本人这儿已经下载下来了(jdk-6u30-linux-i586.bin);
  所以直接在CRT中rz上传就好了命令如下
  # rz
  rz waiting toreceive.
  Starting zmodemtransfer. Press Ctrl+C to cancel.
  100%83283 KB 3331 KB/s 00:00:250 Errors
  # ll
  总用量 83372
  -rw-r--r--. 1root root 85282052 1月 11 2012 jdk-6u30-linux-i586.bin
  查看已经有了,这时候安装就好了
  修改一下权限:

chmod 777jdk-6u30-linux-i586.bin
  接下来执行文件就好了:

./ jdk-6u30-linux-i586.bin
  接下来会显示好多安装信息不用管直到出现下方信息就证明已经安装ok了
  how it ismanaged and used, see:
  http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html
  Press Enter tocontinue.....
  (这儿敲一下键盘)
  Done.
  # ll
  总用量 83376
  drwxr-xr-x. 10root root 4096 12月9 04:10 jdk1.6.0_30
  -rwxrwxrwx. 1 root root 85282052 1月 11 2012 jdk-6u30-linux-i586.bin
  5.接下来配置环境变量
  <1>#
  

vi/etc/profile
<2>在最后加入以下几行:
export JAVA_HOME=/usr/java/jdk1.6.0_30
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
  <3> 然后生效文件

source/etc/profile
  <4>检查

# java -version
  java version"1.6.0_30"
  Java(TM) SERuntime Environment (build 1.6.0_30-b12)
  Java HotSpot(TM)Client VM (build 20.5-b03, mixed mode, sharing)
  这就ok了
  6.接下来修改一下主机名称
  命令(hostname master)

192.168.1.12 master
192.168.1.11 slave1
192.168.1.13 slave2
  7.关闭防火墙

# service iptables stop


  iptables:清除防火墙规则:
  [确定]
  iptables:将链设置为政策 ACCEPT:filter [确定]
  iptables:正在卸载模块:[确定]
  8./etc/hosts 文件内容追加

192.168.1.12master
192.168.1.11slave1
192.168.1.13slave2
  9.

vi /etc/ssh/sshd_config


(这一块是无密码验证,重启VM后在连接CRT连不上了所以后来又去掉了,姑且这一块先不管了,)  在PasswordAuthentication yes这一样注掉然后加上下边的

PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys

  10.authorized_keys文件拷贝到两台slave主机

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

  11.远程scp文件
  authorized_keys文件拷贝到两台slave主机

scp authorized_keys slave1:~/.ssh/   
scp authorized_keys slave2:~/.ssh/
  追加权限
  注意如果权限不对就改一下权限

chmod g-w authorized_keys
  这时就可以ssh登录直接进入而不用密码拉
  12.下载hadoop文件上传到虚拟机中
  本人下载的Hadoop 0.20.2,去apache官方网站下载即可。
  上传上去后解压文件
  /usr/local/hadoop/
  接下来进入如下目录

$ pwd
/usr/local/hadoop
$ ll
总用量 7536
drwxr-xr-x.2 hcr hcr   4096 12月 10 2012 bin
-rw-rw-r--.1 hcr hcr74035 2月19 2010 build.xml
drwxr-xr-x.4 hcr hcr   4096 2月19 2010 c++
-rw-rw-r--.1 hcr hcr 348624 2月19 2010 CHANGES.txt
drwxr-xr-x.2 hcr hcr   4096 10月 19 16:22conf
drwxr-xr-x. 13hcr hcr    4096 2月 19 2010 contrib
drwxr-xr-x.7 hcr hcr   4096 12月 10 2012 docs
-rw-rw-r--.1 hcr hcr   6839 2月19 2010 hadoop-0.20.2-ant.jar
-rw-rw-r--.2 hcr hcr 2689741 2月 19 2010 hadoop-0.20.2-core.jar
-rw-rw-r--.1 hcr hcr 142466 2月19 2010 hadoop-0.20.2-examples.jar
-rw-rw-r--.1 hcr hcr 1563859 2月 19 2010 hadoop-0.20.2-test.jar
-rw-rw-r--.1 hcr hcr69940 2月19 2010 hadoop-0.20.2-tools.jar
-rw-rw-r--.2 hcr hcr 2689741 2月 19 2010 hadoop-core-0.20.2.jar
drwxr-xr-x.2 hcr hcr   4096 12月 10 2012 ivy
-rw-rw-r--.1 hcr hcr   8852 2月19 2010 ivy.xml
drwxr-xr-x.5 hcr hcr   4096 12月 10 2012 lib
drwxr-xr-x.2 hcr hcr   4096 12月 10 2012librecordio
-rw-rw-r--.1 hcr hcr13366 2月19 2010 LICENSE.txt
drwxrwxr-x.4 hcr hcr   4096 10月 19 20:13logs
-rw-rw-r--.1 hcr hcr    101 2月19 2010 NOTICE.txt
-rw-rw-r--.1 hcr hcr   1366 2月19 2010 README.txt
drwxr-xr-x. 15hcr hcr    4096 12月 10 2012 src
drwxr-xr-x.4 hcr hcr   4096 8月12 01:12 tmp
drwxr-xr-x.8 hcr hcr   4096 2月19 2010 webapps
$
  然后把环境变量配置上吧,或者写一个脚本放到/usr/bin/下方指定到hadoop启动文件上。

# set hadooppath
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin



  进入conf配置目录
  然后把文件修改成如下
  $ cat masters
  master
  $ cat slaves
  slave1
  slave2
  $ cat core-site.xml
  <?xmlversion="1.0"?>
  <?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
  <!-- Putsite-specific property overrides in this file. -->
  <configuration>
  <property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hadoop/tmp</value>
  <description>A base for other temporarydirectories.</description>
  </property>
  <!-- filesystem properties -->
  <property>
  <name>fs.default.name</name>
  <value>hdfs://master:9000</value>
  </property>
  <!-- OOZIE-->
  <property>
  <name>hadoop.proxyuser.hcr.hosts</name>
  <value>*</value>
  </property>
  <property>
  <name>hadoop.proxyuser.hcr.groups</name>
  <value>hcr</value>
  </property>
  <property>
  <name>dfs.permissions</name>
  <value>false</value>
  </property>
  </configuration>
  $ cat hdfs-site.xml
  <?xmlversion="1.0"?>
  <?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
  <!-- Putsite-specific property overrides in this file. -->
  <configuration>
  <property>
  <name>dfs.replication</name>
  <value>2</value>
  <!--(备注:replication 是数据副本数量,默认为3,salve少于3台就会报错)-->
  </property>
  </configuration>
  $
  $ cat mapred-site.xml
  <?xmlversion="1.0"?>
  <?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
  <!-- Putsite-specific property overrides in this file. -->
  <configuration>
  <property>
  <name>mapred.job.tracker</name>
  <value>http://master:9001</value>
  </property>
  </configuration>
  $
  把hadoop-env.sh中配置上jdk的环境变量,当然pids文件,日志目录文件都可以重新指定,但是个人测试搭建集群这个不主要。
  export JAVA_HOME=/usr/java/jdk1.6.0_30
  $ cat hadoop-env.sh
  # SetHadoop-specific environment variables here.
  # The onlyrequired environment variable is JAVA_HOME.All others are
  # optional. When running a distributed configuration itis best to
  # set JAVA_HOMEin this file, so that it is correctly defined on
  # remote nodes.
  # The javaimplementation to use. Required.
  # exportJAVA_HOME=/usr/lib/j2sdk1.5-sun
  # Extra JavaCLASSPATH elements. Optional.
  # exportHADOOP_CLASSPATH=
  # The maximumamount of heap to use, in MB. Default is 1000.
  # exportHADOOP_HEAPSIZE=2000
  # Extra Javaruntime options. Empty by default.
  # exportHADOOP_OPTS=-server
  HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
  # Commandspecific options appended to HADOOP_OPTS when specified
  exportHADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"
  exportHADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote$HADOOP_SECONDARYNAMENODE_OPTS"
  exportHADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote$HADOOP_DATANODE_OPTS"
  exportHADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"
  exportHADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote$HADOOP_JOBTRACKER_OPTS"
  # exportHADOOP_TASKTRACKER_OPTS=
  # The followingapplies to multiple commands (fs, dfs, fsck, distcp etc)
  # exportHADOOP_CLIENT_OPTS
  # Extra ssh options. Empty by default.
  # exportHADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR"
  # Where logfiles are stored. $HADOOP_HOME/logs bydefault.
  # exportHADOOP_LOG_DIR=${HADOOP_HOME}/logs
  # File namingremote slave hosts.$HADOOP_HOME/conf/slaves by default.
  # exportHADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
  # host:pathwhere hadoop code should be rsync'd from.Unset by default.
  # exportHADOOP_MASTER=master:/home/$USER/src/hadoop
  # Seconds tosleep between slave commands. Unset bydefault. This
  # can be usefulin large clusters, where, e.g., slave rsyncs can
  # otherwisearrive faster than the master can service them.
  # exportHADOOP_SLAVE_SLEEP=0.1
  # The directorywhere pid files are stored. /tmp by default.
  # exportHADOOP_PID_DIR=/var/hadoop/pids
  # A stringrepresenting this instance of hadoop. $USER by default.
  # exportHADOOP_IDENT_STRING=$USER
  # The schedulingpriority for daemon processes. See 'mannice'.
  # exportHADOOP_NICENESS=10
  # set javaenvironment
  exportJAVA_HOME=/usr/java/jdk1.6.0_30
  $
  以上文件配置ok了后基本上主机配置完毕了。然后就是去执行
  Scp 把master上的hadoop目录直接远程拷贝到slaves1和2上。
  拷贝完后slave1上如下
  $ pwd
  /usr/local/hadoop
  $ ll
  总用量 4904
  drwxr-xr-x. 2 hcr hcr4096 12月 10 2012 bin
  -rw-r--r--. 1 hcr hcr74035 12月 10 2012build.xml
  drwxr-xr-x. 4 hcr hcr4096 12月 10 2012 c++
  -rw-r--r--. 1 hcr hcr348624 12月 10 2012CHANGES.txt
  drwxr-xr-x. 2 hcr hcr4096 10月 19 00:11conf
  drwxr-xr-x. 13hcr hcr 4096 12月 10 2012 contrib
  drwxr-xr-x. 7 hcr hcr4096 12月 10 2012 docs
  -rw-r--r--. 1 hcr hcr6839 12月 10 2012hadoop-0.20.2-ant.jar
  -rw-r--r--. 1 hcr hcr 2689741 12月 10 2012 hadoop-0.20.2-core.jar
  -rw-r--r--. 1 hcr hcr142466 12月 10 2012hadoop-0.20.2-examples.jar
  -rw-r--r--. 1 hcr hcr 1563859 12月 10 2012 hadoop-0.20.2-test.jar
  -rw-r--r--. 1 hcr hcr69940 12月 10 2012hadoop-0.20.2-tools.jar
  drwxr-xr-x. 2 hcr hcr4096 12月 10 2012 ivy
  -rw-r--r--. 1 hcr hcr8852 12月 10 2012ivy.xml
  drwxr-xr-x. 5 hcr hcr4096 12月 10 2012 lib
  drwxr-xr-x. 2 hcr hcr4096 12月 10 2012librecordio
  -rw-r--r--. 1 hcr hcr13366 12月 10 2012LICENSE.txt
  drwxrwxr-x. 3 hcr hcr4096 10月 19 04:00logs
  -rw-r--r--. 1 hcr hcr101 12月 10 2012NOTICE.txt
  -rw-r--r--. 1 hcr hcr1366 12月 10 2012README.txt
  drwxr-xr-x. 15hcr hcr 4096 12月 10 2012 src
  drwxr-xr-x. 4 hcr hcr4096 8月 5 02:18 tmp
  drwxr-xr-x. 8 hcr hcr4096 12月 10 2012webapps
  $
  接下来所有的copy完毕后开始要进入启动hadoop相关动作上了。
  先格式化一下namenode
  $ bin/hadoop namenode –format
  成功后,
  接下来启动ok 了。
  $ bin/start-all.sh
  startingnamenode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-namenode-master.out
  slave1: startingdatanode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-datanode-slave1.out
  slave2: startingdatanode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-datanode-slave2.out
  master: startingsecondarynamenode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-secondarynamenode-master.out
  startingjobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hcr-jobtracker-master.out
  slave1: startingtasktracker, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-tasktracker-slave1.out
  slave2: startingtasktracker, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-tasktracker-slave2.out
  启动成功后查看一下java 进程jps
  $ jps
  8349 Jps
  8207SecondaryNameNode
  8281 JobTracker
  8055 NameNode
  这时候SNN,NN,jobtracker都有了。
  数据节点查看一下
  $ jps
  4750 Jps
  4705 TaskTracker
  4608 DataNode
  $
  数据节点datanode 和taskTracker也都有了。
  然后就能看到相关目录了
  $ hadoop fs –ls /
  这个时候进入
  http://master:50070/dfshealth.jsp
  查看页面


  Namenode起来了。
  然后点击进入Browse the filesystem


  Datanode 也起来了。
  然后去看看jobtracker

  能访问也起来了。
  接下来就算安装成功了。
页: [1]
查看完整版本: 虚拟机搭建hadoop集群