Hadoop安装配置流程

    技术2022-05-18  9

    初学hadoop,写下一些 学习过程 和 心得体会,希望能帮助到同样学习的兄弟们 三台机器: 分别为 master(192.168.32.5),slave1(192.168.32.6),slave2(192.168.32.7) master即为hadoop的Namenode节点,slave1和slave2为hadoop的Datanode节点 注:以下操作均为root用户或root权限用户操作(本文章为root用户操作) 1.设置机器名(在这里只要机器名不同就可以,不一定需要后缀域名)      (1). hostname分别为:master.localdomain                  slave1.localdomain                 slave2.localdomain         分别修改各机器/etc/sysconfig/network文件 ,使            hostname=master.localdomain            hostname=slave1.localdomain            hostname=slave2.localdomain    (2). 各机器/etc/hosts文件配置为         # cat /etc/hosts         192.168.32.5 master.localdomain  master         192.168.32.6 slave1.localdomain  slave1         192.168.32.7 slave2.localdomain  slave2      注:以上机器各个机器名一定要不同,否则hadoop的raduce过程会出错,之所以各个机器名使用域名方式 ,是因为这样可以使 linux启动时 sendmain和ssclient进程启动更迅速些 2.无密码登陆    (1).  本机无密码登陆(master)       从master (Namenode)上无需密码ssh到各slave (Datanode)上,在master上执行如下命令:       # ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa        则在 /root/.ssh目录中生成了两个文件为::id_dsa 和id_dsa.pub。这两个是成对出现,类似钥匙和锁。再把id_dsa.pub 追加到授权key 里面(当前并没有authorized_keys文件):$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys。完成后可以实现无密码登录本机:$ ssh localhost。    (2).  master (Namenode) 到slavle(DataNode)无密码登陆         把NameNode 上的id_dsa.pub 文件追加到dataNode 的authorized_keys 内( 以192.168.32.7 节点为例):        a. 拷贝NameNode 的id_dsa.pub 文件:           $ scp id_dsa.pub root@192.168.32.7:/root        b. 登录192.168.32.7,执行$ cat id_dsa.pub >> .ssh/authorized_keys        其他的dataNode 执行同样的操作。        注意:如果配置完毕,如果namenode 依然不能访问datanode,可以修改datanode 的authorized_keys:$ chmod 600 authorized_keys。 3.关闭linux防火墙,使其永久关闭防火墙   # chkconfig iptables off   # service iptables stop  (如果只运行此一条命令,系统重启后防火墙将继续开启) 4.安装JDK,配置JDK环境变量,过程略过 (此需要JDK1.6+版本) 5.安装hadoop     下载hadoop安装包,我下载的的为hadoop-0.20.0.tar.gz版本,解压即可(本人解压到/usr目录中)      # tar -zxvf hadoop-0.20.0.tar.gz      配置hadoop环境变量,添加如下到/etc/profile中      export HADOOP_HOME=/usr/hadoop-0.20.2      export PATH=$HADOOP_HOME/bin:$PATH 6.配置hadoop   hadoop 的主要配置都在hadoop-0.20.2/conf 下。   (1).在conf/hadoop-env.sh 中配置Java 环境(namenode与datanode 的配置相同):      $ vi hadoop-env.sh      配置export JAVA_HOME=/usr/java/jdk1.6  (去掉行的#注释且加java路径即可)   (2).配置conf/masters 和conf/slaves 文件:(只在namenode 上配置)           masters文件内容:                 192.168.32.5           slaves文件内容:                192.168.32.6                192.168.32.7   (3).配置conf/core-site.xml, conf/hdfs-site.xml 及conf/mapred-site.xml (简单配置,datanode 的配置相同,不同情况说明)       A. core-site.xml:          <configuration>             <property>                <name>hadoop.tmp.dir</name>                <value>/root/hadoop/tmp</value>                <description>A base for other temporary directories.</description>             </property>             <property>                 <name>fs.default.name</name>                 <value>hdfs://192.168.32.5:9000</value>              </property>         </configuration>       B. hdfs-site.xml:        <configuration>            <!--dfs.name.dir在namenode中配置,在datanode中可省略, 如在namenode中省略,则namenode数据存储于/root/hadoop/tmp/name文件夹中-->            <property>                 <name>dfs.name.dir</name>                 <value>/root/hadoopName</value>            </property>            <!--dfs.data.dir节点如在datanode中省略,则datanode数据存储于/root/hadoop/tmp/data文件夹中-->            <property>                 <name>dfs.data.dir</name>                 <value>/root/hadoopData</value>            </property>            <!--replication 默认为3,如果不修改,datanode 少于三台就会报错-->            <property>                 <name>dfs.replication</name>                 <value>1</value>             </property>          </configuration>        C.  mapred-site.xml:          <configuration>             <property>                 <name>mapred.job.tracker</name>                 <value>192.168.32.5:9001</value>             </property>          </configuration>   (4).运行hadoop          进入hadoop-0.20.1/bin,首先格式化文件系统:$ hadoop namenode –format          启动Hadoop:$ start-all.sh          用jps 命令查看进程,NameNode 上的结果如下:          # jps          3020 JobTracker          2952 SecondaryNameNode          2817 NameNode          3110 Jps          DataNode上的结果:          # jps            6360 Jps           6222 TaskTracker           6158 DataNode       web地址输入 http://192.168.32.5:50070/dfshealth.jsp,如图            点击Browse the filesystem链接进入 http://192.168.32.7:50075/browseDirectory.jsp?namenodeInfoPort=50070&dir=/ ,如图                    查看集群状态,         [root@master conf]# hadoop dfsadmin -report         Configured Capacity: 8110792704 (7.55 GB)         Present Capacity: 2848157696 (2.65 GB)         DFS Remaining: 2847920128 (2.65 GB)         DFS Used: 237568 (232 KB)         DFS Used%: 0.01%         Under replicated blocks: 0         Blocks with corrupt replicas: 0         Missing blocks: 0         -------------------------------------------------         Datanodes available: 2 (2 total, 0 dead)         Name: 192.168.32.7:50010         Decommission Status : Normal         Configured Capacity: 4055396352 (3.78 GB)         DFS Used: 126991 (124.01 KB)         Non DFS Used: 2631352305 (2.45 GB)         DFS Remaining: 1423917056(1.33 GB)         DFS Used%: 0%         DFS Remaining%: 35.11%         Last contact: Wed Mar 23 04:44:25 CST 2011         Name: 192.168.32.6:50010         Decommission Status : Normal         Configured Capacity: 4055396352 (3.78 GB)         DFS Used: 110577 (107.99 KB) Non DFS Used: 2631282703 (2.45 GB) DFS Remaining: 1424003072(1.33 GB) DFS Used%: 0% DFS Remaining%: 35.11% Last contact: Wed Mar 23 04:44:27 CST 2011      此时hadoop安装即完成了 遇到的问题: 1. 出现错误:Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out    此问题也和系统 打开文件数限制 有关系,但初装应该不会超限,所以原因如下:       (1).对于运行在A节点上的map任务,运行完毕后,将运行结果提交给jobtracker,并将运行结果保存在节点A上.       (2).对于运行在B节点上的reduce任务,从jobtracker取得任务信息(假设任务包括对节点A的map的数据).并直接从节点A提取该map的结果.    我的这一问题发生的原因在第二步.当节点B的reduce从jobtracker获得的任务中,包括map的服务器地址,而这个地址是改服务器的名字,而不是IP地址.因此,当在本地解析该服务器名的时候,无法解析出他的ip地址,导致无法从A节点,提去数据.  解决办法: 1. 配置 /etc/hosts            <A的ip地址>  A的服务器名               2. 配置各个机器的hostname,使其hostname不同                           # hostname naster  当前生效,重启失效                        或                       修改 /etc/sysconfig/network文件                          hostname=master                  注:不要删除host文件里的 localhost.localdomain 问题二: 出现如下异常: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /root/hadoop/tmp/mapred/system. Name  node is in safe mode. 解决办法:   # hadoop dfs -safemode leave 问题三: namenode和Datanode都正常启动,只有进程,也可以建立文件夹,但不能对文件作操作(即:访问不了datanode) 解决方法: # chkconfig iptables off # service iptables stop  永久关闭防火墙 --------------------------------------------------------------------------------------- 提前问题: 在hadoop启动的时候,个人关掉了slave2,master却不知道, 怎么让它知道?? 你知道Zoo Keeper吗?? 现象:stop-all.sh 出现如下信息 [root@master root]# stop-all.sh stopping jobtracker 192.168.32.6: stopping tasktracker 192.168.32.7: ssh: connect to host 192.168.32.7 port 22: No route to host stopping namenode 192.168.32.6: stopping datanode 192.168.32.7: ssh: connect to host 192.168.32.7 port 22: No route to host 192.168.32.5: stopping secondarynamenode


    最新回复(0)