1、安装 HADOOP 集群服务器 1. 规划 功能 HOSTNAME IP 说明 Master HDM01 192.168.1.1 Namenode 兼 datanode Slave HDS02 192.168.1.2 Datanode Slave HDS03 192.168.1.3 Datanode Client HDC04 192.168.1.4 HADOOP客户端(HDFS/HIVE) 2. 环境 2.1. 系统环境 安装 centOS6.2 = 软件工作站(software Development Workstation) 3. Hadoop 安装 3.1. 安装和配置 SSH 、RSY
2、NC( Root 用户) 安装 SSH和rsync 一般系统自带了; 3.2. 创建 Hadoop 运行用户( Root 用户) 一般我们不会经常使用root用户运行hadoop,所以要创建一个平常运行和管理Hadoop的 用户; 创建hadoop用户和用户组 useradd hadoop PS:master和slave节点机都要创建相同的用户和用户组,即在所有集群服务器上都要 建hadoop用户和用户组。 3.3. 关闭防火墙( Root 用户) 在启动前关闭集群中所有机器的防火墙,不然会出现 datanode开后又自动关闭。所以 对集群所有服务器关闭防火墙:chkconfig iptabl
3、es off 查看防火墙状态:service iptables status 永久关闭防火墙:chkconfig iptables off 查看防火墙状态:chkconfig -list iptables 3.4. 配置机器名和网络( Root用户) 配置HOSTNAME vi /etc/sysconfig/network,修改:HOSTNAME=hmaster 其他节点依次改为slave1,slave2.不过必须和上面一致 验证; 输入命令 hostname 配置网络IP cd /etc/sysconfig/network-scripts vi ifcfg-eth0(因为硬件不同,其中的“e
4、th0”可能是其他名称) 配置IP和HOSTNAME映射关系 vi /etc/hosts rootNOAS # more /etc/hosts #127.0.0.1 localhost localhost.localdomain localhost4 #localhost4.localdomain4 :1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.1 HDM01 192.168.1.2 HDS02 192.168.1.3 HDS03 192.168.1.4 HDC04 3.5. 配置
5、非 root 用户免验证登录 SSH( hadoop 用户) 提示:Linux配置ssh是通过欺骗登录用户名的。所以上面创建用户的时候,我们都把3 个节点的username都设置成hadoop,主要是用户名必须一致 在hadoop用户的home目录,即 cd /home/hadoop 下执行命令 用hadoop用户登录(第 一/二/三步分别在每一个节点上都要执行) 第一步:ssh-keygen -t rsa -P -f /.ssh/id_rsa 意思是读取 id_dsa文件默认 全部是yes安装 和root用户一样,会发现多处2个文件,一个是公开密匙,一个是访问用户 名字信息的 第二步:cat
6、 /.ssh/id_rsa.pub /.ssh/authorized_keys 是把暴露出来的公共密匙按顺序导入authorized_keys中保存 第三步:chmod 700 /.ssh chmod 600 /.ssh/authorized_keys ssh机制很严谨,对文件的权限要求非常严格 我们需要把.ssh文件夹的权限改为700 ,默认是777 authorized_keys的权限这里是对的,600 第四步:在主节点上执行下列命令 ssh HDS02 cat /.ssh/id_rsa.pub /.ssh/authorized_keys ssh HDS03 cat /.ssh/id_rs
7、a.pub /.ssh/authorized_keys scp authorized_keys hadoopHDS02:/home/hadoop/.ssh/ scp authorized_keys hadoopHDS03:/home/hadoop/.ssh/ 最终authorized_keys文件要有各个集群服务器的信息 第五步:验证 第一次会要求输入密码,完成后测试,每台机都要求能联通: ssh HDM01 ssh HDS02 ssh HDS03 不输入密码 就表示成功了; 3.6. 安装 JDK( hadoop 用户 ) 检查是否已安装JDK: rpm -qa|grep jdk 检查JAV
8、A安装目录: whick java 检查是否配置JAVA_HOME: env|grep JAVA_HOME which java 和 JAVA_HOME 路径不一致,是做了LINK映射 rootNOAS # su - hadoop hadoopNOAS $ rpm -qa|grep jdk java-1.6.0-openjdk-javadoc-1.6.0.0-1.41.1.10.4.el6.x86_64 java-1.6.0-openjdk-devel-1.6.0.0-1.41.1.10.4.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.41.1.10.4.e
9、l6.x86_64 hadoopNOAS $ which java /usr/bin/java hadoopNOAS $ ls -l /usr/bin/java lrwxrwxrwx. 1 root root 22 Feb 26 22:26 /usr/bin/java - /etc/alternatives/java hadoopNOAS $ ls -l /etc/alternatives/java lrwxrwxrwx. 1 root root 46 Feb 26 22:26 /etc/alternatives/java - /usr/lib/jvm/jre-1.6.0-openjdk.x8
10、6_64/bin/java hadoopNOAS $ env|grep JAVA_HOME JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 在当前用户配置JAVA_HOME,在.bash_profile文件增加蓝色部分,最后 source /home/hadoop/.bash_profile ,使生效 hadoopNOAS $ cd /home/hadoop/ hadoopNOAS $ more .bash_profile # .bash_profile # Get the aliases and functions if -f /.bashrc
11、 ; then . /.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH hadoop
12、NOAS $ 3.7. 安装 Hadoop( root 用户 ) 3.7.1. 安装 rpm 包: 用rpm包安装,目录都是默认的比较规范 用root用户: rpm -ivh /opt/colud/hadoop-1.2.1-1.x86_64.rpm 3.7.2. 配置 Hadoop 配置文件 (每台机器服务器都要配置,且都是一样的,配置完一台其他的只需要拷贝,每 台机上的core-site.xml和mapred-site.xml都是配master服务器的hostname,因为都是 配置hadoop的入口) core-site.xml:整个hadoop入口的配置 vi /etc/hadoop/c
13、ore-site.xml,配置如下内容: hadoop.tmp.dir /home/hadoop/tmp fs.default.name hdfs:/HDM01:9000 vi /etc/hadoop/hdfs-site.xml,配置如下内容: dfs.replication 2 vi /etc/hadoop/mapred-site.xml,配置如下内容: mapred.job.tracker HDM01:9001 配置说明: core-site.xml hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。它默认 的位置是在/tmp/$user下面,但是在/tm
14、p路径下的存储是不安全的,因为 linux一次重启,文件就可能被删除。 修改该参数后要格式NAMENODE: hadoop namenode -format 3.7.3. 配置 Hadoop 集群配置文件 (只需要配置namemode节点机,这里的HDM01即做namenode也兼datanode,一般情况 namenode要求独立机器,namemode不兼datanode) vi /etc/hadoop/masters,配置如下内容: HDM01 vi /etc/hadoop/slaves,配置如下内容: HDM01 HDS02 HDS03 3.7.4. 配置非 ROOT 用户权限 (包含用
15、非root用户启动Hadoop所需的额外项) 将/usr/sbin/下的以下脚本文件 的owner设为testusr,且赋给owner全权rwx : chown hadoop:hadoop /usr/sbin/hadoop-create-user.sh chown hadoop:hadoop /usr/sbin/hadoop-daemon.sh chown hadoop:hadoop /usr/sbin/hadoop-daemons.sh chown hadoop:hadoop /usr/sbin/hadoop-setup-applications.sh chown hadoop:hadoop
16、 /usr/sbin/hadoop-setup-conf.sh chown hadoop:hadoop /usr/sbin/hadoop-setup-hdfs.sh chown hadoop:hadoop /usr/sbin/hadoop-setup-single-node.sh chown hadoop:hadoop /usr/sbin/hadoop-validate-setup.sh chown hadoop:hadoop /usr/sbin/rcc chown hadoop:hadoop /usr/sbin/slaves.sh chown hadoop:hadoop /usr/sbin/
17、start-all.sh chown hadoop:hadoop /usr/sbin/start-balancer.sh chown hadoop:hadoop /usr/sbin/start-dfs.sh chown hadoop:hadoop /usr/sbin/start-jobhistoryserver.sh chown hadoop:hadoop /usr/sbin/start-mapred.sh chown hadoop:hadoop /usr/sbin/stop-all.sh chown hadoop:hadoop /usr/sbin/stop-balancer.sh chown
18、 hadoop:hadoop /usr/sbin/stop-dfs.sh chown hadoop:hadoop /usr/sbin/stop-jobhistoryserver.sh chown hadoop:hadoop /usr/sbin/stop-mapred.sh chown hadoop:hadoop /usr/sbin/update-hadoop-env.sh chmod u+rwx /usr/sbin/hadoop-create-user.sh chmod u+rwx /usr/sbin/hadoop-daemon.sh chmod u+rwx /usr/sbin/hadoop-
19、daemons.sh chmod u+rwx /usr/sbin/hadoop-setup-applications.sh chmod u+rwx /usr/sbin/hadoop-setup-conf.sh chmod u+rwx /usr/sbin/hadoop-setup-hdfs.sh chmod u+rwx /usr/sbin/hadoop-setup-single-node.sh chmod u+rwx /usr/sbin/hadoop-validate-setup.sh chmod u+rwx /usr/sbin/rcc chmod u+rwx /usr/sbin/slaves.
20、sh chmod u+rwx /usr/sbin/start-all.sh chmod u+rwx /usr/sbin/start-balancer.sh chmod u+rwx /usr/sbin/start-dfs.sh chmod u+rwx /usr/sbin/start-jobhistoryserver.sh chmod u+rwx /usr/sbin/start-mapred.sh chmod u+rwx /usr/sbin/stop-all.sh chmod u+rwx /usr/sbin/stop-balancer.sh chmod u+rwx /usr/sbin/stop-d
21、fs.sh chmod u+rwx /usr/sbin/stop-jobhistoryserver.sh chmod u+rwx /usr/sbin/stop-mapred.sh chmod u+rwx /usr/sbin/update-hadoop-env.sh 将/usr/bin/下的hadoop设为所有人(不是其他人)可读可执行。即chmod 555(不是chmod 005) chmod 555 /usr/bin/hadoop /var/log/hadoop/及其下(循环)的owner设为testusr,且赋给owner全权rwx /var/run/hadoop/及其下(循环)的owne
22、r设为testusr,且赋给owner全权rwx /home/hadoop/及其下(循环)的owner设为testusr,且owner权限设为“rwxr- xr-x”,设为更大权限不行,主要是因为/home/hadoop/tmp/dfs/data的权限需要 为“rwxr-xr-x” chown -R hadoop:hadoop /var/log/hadoop/ chown -R hadoop:hadoop /var/run/hadoop/ chown -R hadoop:hadoop /home/hadoop/ chmod -R u+rwx /var/log/hadoop/ chmod -R
23、u+rwx /var/run/hadoop/ chmod -R u+rwx /home/hadoop/ 3.7.5. 配置 HADOOP 的 JAVA 环境 配置Hadoop的java环境与env的JAVA_HOME保持一致,文件/etc/hadoop/hadoop- env.sh # The java implementation to use. #export JAVA_HOME=/usr/java/default export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 export HADOOP_CONF_DIR=$HADOOP_CO
24、NF_DIR:-“/etc/hadoop“ 3.8. 格式化 HDFS( hadoop 用户) hadoop namenode -format(用 hadoop用户) 重新 format时,系统提示如下: Re-format filesystem in /home/hadoop/tmp/dfs/name ? (Y or N) 必须输入大写 Y,输入小写 y不会报输入错误,但 format出错。 chown -R hadoop:hadoop /home/hadoop/ chmod -R 755 /home/hadoop/ 3.9. 启动 Hadoop( hadoop 用户) Hadoop用户登录
25、 命令: start-all.sh (记得关闭所有的防火墙) 3.9.1. 验证 hadoop (1)验证方法一:用“jps“ 命令 在 Master 上用 java 自带的小工具 jps 查看 5 个进程都在。 在 Slave1 上用 jps 查看进程。 如果在查看 Slave 机器中发现“DataNode“和“TaskTracker“没有起来时,先查看一下日 志的,如果是“namespaceID“不一致问题,采用“常见问题 FAQ6.2“进行解决,如果是“No route to host“问题,采用“常见问题 FAQ6.3“进行解决。 (2)验证方式二:用“hadoop dfsadmin
26、-report“ 用这个命令可以查看 Hadoop 集群的状态。 Master 服务器的状态: Slave 服务器的状态 4.4 网页查看集群 1)访问“http:192.168.1.1:50030“ 2)访问“http: 192.168.1.1:50070“ 3.10. HADOOP 语法 3.10.1. 启动/关闭 Start-all.sh / stop-all.sh 3.10.2. 进程 Jps Master 节点:namenode/tasktracker (如果 Master 不兼做 Slave, 不会出现 datanode/Tasktracker Slave 节点:datanode/
27、Tasktracker 说明: JobTracker 对应于 NameNode TaskTracker 对应于 DataNode DataNode 和 NameNode 是针对数据存放来而言的 JobTracker 和 TaskTracker 是对于 MapReduce 执行而言的 mapreduce 中几个主要概念,mapreduce 整体上可以分为这么几条执行线索: jobclient,JobTracker 与 TaskTracker。 1、JobClient 会在用户端通过 JobClient 类将应用已经配置参数打包成 jar 文件 存储到 hdfs,并把路径提交到 Jobtracke
28、r,然后由 JobTracker 创建每个 Task(即 MapTask 和 ReduceTask)并将它们分发到各个 TaskTracker 服务中 去执行 2、JobTracker 是一个 master 服务,软件启动之后 JobTracker 接收 Job,负 责调度 Job 的每一个子任务 task 运行于 TaskTracker 上,并监控它们,如果 发现有失败的 task 就重新运行它。一般情况应该把 JobTracker 部署在单独的 机器上。 3、TaskTracker 是运行在多个节点上的 slaver 服务。TaskTracker 主动与 JobTracker 通信,接收作
29、业,并负责直接执行每一个任务。TaskTracker 都需 要运行在 HDFS 的 DataNode 上 3.10.3. 文件系统 HDFS 查看文件系统根目录: Hadoop fs ls / 文件系统的目录和文件是不能再本地系统查看到的;相当于两个不同的系统; 4. 常见错误 4.1. 错误 :(hadoop)could only be replicated to 0 nodes, instead of 1 现象:namenode 端的 namenodelog 一直报 could only be replicated to 0 nodes, instead of 1 错误,表示没有一个可用的
30、节点 。datanode 端一直报错:Server at /10.0.0.21:54310 not av ailable yet, Zzzzz.2011-03-03 11:33:10,047 INFO org.apache.hadoop.ipc.Client: Retry ing connect to server: /10.0.0.21:54310,一直尝试连接 master 但连接不上 。 改正:在 namenode 中配置 master 和 jobtracker 的 ip 时使用的是 localhost ,将这两个改成 na menode 以及 jobtracker 本机的实际 ip 后
31、,问题得以解决 。 具体的原因我也不太明白 。 当然这个错误还有其他的几个原因(摘自网上): dfs 的空间不足 。 namenode 运行在 safemodel 下。 namenode 所在机器的防火墙开着是的 datanode 无法访问 master 。 这几个问题详见: tml HADOOP 重新格式化文件后,要删除 cd /home/hadop/tmp/data rm rf data Name node is in safe mode. 在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安 全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结 束
32、。安 全模式主要是为了系统启动的时候检查各个 DataNode 上数据块的有效性,同时根据策略 必要的复制或者删除部分数据块。运行期通过命令也可以进入 安全模式。在实践过程中, 系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一 会儿即可。 现在就清楚了,那现在要解决这个问题,我想让 Hadoop 不处在 safe mode 模式下,能 不能不用等,直接解决呢? 答案是可以的,只要在 Hadoop 的目录下输入: bin/hadoop dfsadmin -safemode leave 关闭安全模式就可以了。 。 。 4.2. 用其他用户调用 hadoop 或 HIV
33、E etlHDC04 $ hive Exception in thread “main“ java.io.IOException: Permission denied at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.checkAndCreate(File.java:1716) at java.io.File.createTempFile(File.java:1804) at org.apache.hadoop.util.RunJar.main(RunJar.java:119) 该问题是
34、因为: org.apache.hadoop.util.RunJar.main 里面要创建临时文件: hadoop.tmp.dir 这个目录存放的是解压后的 jar 文件等临时文件。 那么 hadoop.tmp.dir 这个变量是在哪里定义的呢?于是查看本机提交 job 时用到的 hadoop 配置文件 core-site.xml:发现 hadoop.tmp.dir 是 /home/hadoop/hadoop-data 这个目录, 而当前的 admin 用户确实是没有权限访问这个目录的。于是改下配置文件就可以了。 Chmod R 777 /home/hadoop/hadoop-data 4.3. 用其他用户调用 hadoop 或 HIVE 启动 HIVE 出现链接不上 mysql com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes 解决方案:到 mysql 中的 hive 数据库里执行 alter database hivedb character set latin1;改 变 hive 元数据库的字符集,问题就可以解决!
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。