设为首页 收藏本站
查看: 1166|回复: 0

[经验分享] hadoop多次搭建后,完整总结(累死宝宝了,搭建了十多遍了)

[复制链接]

尚未签到

发表于 2017-12-18 10:20:43 | 显示全部楼层 |阅读模式
  1、安装JDK
  1.1上传
  运用软件FileZilla,将windows上的jdk压缩包放到linux的root目录下
  1.2解压jdk
  #创建文件夹
  mkdir /usr/java(不要挂在在“/”系统盘下)
  #解压
  tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/(提前在/usr/目录下创建一个java的文件夹)
  1.3将java添加到环境变量中
  vim /etc/profile
  #在文件最后添加
  export JAVA_HOME=/usr/java/jdk1.7.0_55
  export PATH=$PATH:$JAVA_HOME/bin
  #刷新配置
  source /etc/profile
  2、安装Hadoop
  2.1上传hadoop安装包
  运用软件FileZilla,将windows上的压缩包放到linux的root目录下
  2.2解压hadoop安装包
  在root目录下
  mkdir /cloud
  #解压到/cloud/目录下
  tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/
  2.3修改配置文件(5个)目录  /cloud/hadoop-2.2.0/etc/hadoop
  第一个:hadoop-env.sh
  export JAVA_HOME=/usr/java/jdk1.6
  第二个:core-site.xml
  <configuration>
  <!-- 指定HDFS老大(namenode)的通信地址 -->
  <property>
  <name>fs.defaultFS</name>
  <value>hdfs://northbigpenguin:9000</value>
  </property>
  <!-- 指定hadoop运行时产生文件的存储路径 -->
  <property>
  <name>hadoop.tmp.dir</name>
  <value>/cloud/hadoop-2.2.0/tmp</value>
  </property>
  </configuration>
  第三个:hdfs-site.xml
  <configuration>
  <!-- 设置hdfs副本数量 -->
  <property>
  <name>dfs.replication</name>
  <value>1</value><!--默认是3个,这里改为一个-->
  </property>
  <property>
  <name>dfs.datanode.data.dir</name>
  <value>file:///data/hdfs/data</value>
  </property>
  </configuration>
  第四个:mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml
  <configuration>
  <!-- 通知框架MR使用YARN -->
  <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
  </property>
  <!--这个必须加载-->
  <property>
  <name>mapred.job.tracker</name>
  <value>northbigpenguin:9001</value>
  </property>
  </configuration>
  第五个:yarn-site.xml
  <configuration>
  <!-- reducer取数据的方式是mapreduce_shuffle -->
  <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
  </property>
  <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>northbigpenguin</value>
  </property>
  </configuration>
  3、将hadoop添加到环境变量
  vim /etc/profile
  export JAVA_HOME=/usr/java/jdk1.6
  export HADOOP_HOME=/root/cloud/hadoop-2.2.0
  export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
  完成过后部署一下,才能生效
  source /etc/profile
  4、格式化HDFS(namenode)第一次使用时要格式化
  #过时但还可以使用:hadoop namenode -format
  目录/cloud/hadoop-2.2.0
  hdfs namenode -format   使用这个(注:整个配置中此句子仅仅执行一次,否则会出很多错误)
  注意:
  (1)如果报错:
  -bash: hadoop: command not found
  说明:
  hadoop的路径配置有误。查看vim /etc/profile的export HADOOP_HOME=/root/cloud/hadoop-2.2.0(使用绝对路径)
  不知道绝对路径:
  进入/hadoop-2.2.0/bin  然后输入pwd
  5、启动hadoop
  5.1 初始化HDFS(格式化文件系统)
  (1)查找命令:
  which hadoop
  which hdfs
  (2)到hdfs相对的bin目录下:
  cd /root/Download/hadoop/hadoop-2.2.0/bin
  (3)退到/hadoop-2.2.0所在目录
  hdfs namenode -format (hadoop namenode -format(过时了,但是可用))
  5.2启动hadoop
  (1)进入目录/root/cloud/hadoop-2.2.0/sbin
  (2)先启动HDFS(可以用.../sbin/start-all.sh但是需要多次输入密码)
  (3)第二种启动方法:
  先启动HDFS
  ../sbin
  ./start-dfs.sh
  再启动YARN
  ../sbin
  ./start-yarn.sh
  资源无法访问和stop错误都是重启
  /data/hdfs/data/current
  (2)报错:Error: Cannot find configuration directory:
  进入vim  /etc/profile
  就把所有的路径都配置进去
  export JAVA_HOME=/usr/java/jdk1.6
  export HADOOP_HOME=/root/cloud/hadoop-2.2.0
  export HADOOP_COMMON_HOME=$HADOOP_HOME                                                
  export HADOOP_HDFS_HOME=$HADOOP_HOME
  export HADOOP_MAPRED_HOME=$HADOOP_HOME
  export HADOOP_YARN_HOME=$HADOOP_HOME
  export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  export PATH=$PATH::$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOOME/sbin:$HADOOP_HOME/lib
  export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
  export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
  再次配置一下
  source /etc/profile
  6、然后关闭服务器
  ./stop-all.sh
  重新启动服务:
  ./start-all.sh
  最后出现:
  starting yarn daemons
  starting resourcemanager, logging to /root/cloud/hadoop-2.2.0/logs/yarn-root-resourcemanager-northbigpenguin.out
  localhost: starting nodemanager, logging to /root/cloud/hadoop-2.2.0/logs/yarn-root-nodemanager-northbigpenguin.out
  这样的字样就是配置成功
  7、验证是否启动成功
  (1)数据传输成功验证:
  使用jps命令验证
  目录/root/cloud/hadoop-2.2.0/sbin
  下输入:
  jps
  出现如下六个的文件为配置成功:
  27408 NameNode
  28218 Jps
  27643 SecondaryNameNode
  28066 NodeManager
  27803 ResourceManager
  27512 DataNode
  在主节点执行jps,看到3个进程,分别是NameNode、SecondaryNameNode、JobTracker
  在从节点执行jps,看到2个进程,分别是DataNode、TaskTracker
  (2)网页测试:
  在这个文件中添加linux主机名和IP的映射关系(本机windows系统下)
  C:\Windows\System32\drivers\etc\hosts
  192.168.1.110(LInux的IP地址)localhost(linux主机名)
  访问:northbigpenguin:50070   ((hdfs的web页面)
  northbigpenguin:8088 (MR管理界面)
  网页测试不显示网页需要关闭防火墙
  关闭防火墙
  #查看防火墙状态
  service iptables status
  #关闭防火墙
  service iptables stop
  #查看防火墙开机启动状态
  chkconfig iptables --list
  #关闭防火墙开机启动
  chkconfig iptables off
  注意:
  页面访问:
  Live Nodes-->Browse the filesystem 需要配置本地连接否则会无法访问
  http://northbigpenguin:50075/browseDirectory.jsp?namenodeInfoPort=50070&dir=/&nnaddr=localhostip:9000
  点击后跳转到这个界面
  页面数据测试:
  上传文件到hadoop (文件是临时的,服务器关闭,文件消失):
  hadoop fs -put /root/Download/jdk-6u45-linux-x64.bin hdfs://northbigpenguin:9000/jdk
  然后在界面可以看到:
  http://northbigpenguin:50075/browseDirectory.jsp
  命令行下载上传的文件:
  hadoop fs -get /root/Download/jdk-6u45-linux-x64.bin hdfs://northbigpenguin:9000/jdk
  运行实例
  (1)先在本地磁盘建立两个输入文件 file01和file02
  $echo "Hello World Bye World" > file01
  $echo "Hello Hadoop Goodbye Hadoop" > file02
  (2)在hdfs中建立一个input目录:$hadoop fs -mkdir input
  (3)将file01和file02拷贝到hdfs中:
  $hadoop fs -copyFromLocal /home/zhongping/file0* input
  (4)执行wordcount:
  $hadoop jar hadoop-0.20.2-examples.jar wordcount input output
  (5)完成之后,查看结果
  $hadoop fs -cat output/part-r-00000
  NameNode
  Jps
  SecondaryNameNode
  NodeManager
  ResourceManager
  DataNode关系和联系
  yarn负责资源的调度
  ResourceManager(负责管理)是yarn的上一级
  NodeManager(负责干活)(可以是一个,集群时是多个)是yarn的低一级
  SecondaryNameNode  是hadoop1.0的解决HA(高可靠性)的方案
  SecondaryNameNode不是NameNode的一个热备(namenode坏了SecondaryNameNode不执行)
  SecondaryNameNode是NameNode的助理(完成数据同步,但不是实时的)
  hdfs
  NameNode是hdfs的上一级
  DataNode(负责存放数据)是hdfs的下一级
  错误:

  WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java>  applicable
  系统版本不兼容
  部署Hadoop的集群环境为?  操作系统 CentOS 5.8???  hadoop版本为cloudera?? hadoop-0.20.2-cdh3u3
  集群中设置支持gzip lzo压缩后,在对压缩文件进行读取或者对输入文件压缩的时候要使用到hadoop的本地库,本地库的默认位置在  
  $HADOOP_HOME/lib/native/Linux-amd64-64?? (64位操作系统)  
  $HADOOP_HOME/lib/native/Linux-i386-32?? (32位操作系统)  
  文件夹中的libhadoop.so文件,就是hadoop的本地库。  
  如果本地库不存在,或者本地库与当前操作系统的版本不一致的时候,会报下面的错误:  
  11/09/20 17:29:49 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java
  classes where applicable  
  增加调试信息设置  
  (开启:export HADOOP_ROOT_LOGGER=DEBUG,console
  关闭:export HADOOP_ROOT_LOGGER=INFO,console)
  $ export HADOOP_ROOT_LOGGER=DEBUG,console   
  $ hadoop fs -text /test/data/origz/access.log.gz   
  2012-04-24 15:55:43,269 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your

  platform... using builtin-java>  /usr/local/hadoop/lib/native/Linux-amd64-64?  
  说明系统中的glibc的版本和libhadoop.so需要的版本不一致导致  
  查看系统的libc版本?
  # ll /lib64/libc.so.6  
  lrwxrwxrwx 1 root root 11 Apr 24 16:49 /lib64/libc.so.6 -> libc-2.5.so  
  系统中的版本为2.5  将系统中的glibc升级为2.9  
  下载glibc wget? http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2  
  下载glibc-linuxthreads wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.bz2  
  解压 $tar -jxvf glibc-2.9.tar.bz2 $cd glibc-2.9
  $tar -jxvf ../glibc-linuxthreads-2.5.tar.bz2
  $cd .. $export CFLAGS="-g -O2"
  $./glibc-2.7/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include
  --with-binutils=/usr/bin
  $make
  #make install  
  安装编译过程中需要注意三点:
  1、要将glibc-linuxthreads解压到glibc目录下。
  2、不能在glibc当前目录下运行configure。
  3、加上优化开关,export CFLAGS="-g -O2",否则会出现错误  
  安装完后,可以查看ls -l /lib/libc.so.6已升级  
  lrwxrwxrwx 1 root root 11 Apr 24 16:49 /lib64/libc.so.6 -> libc-2.9.so  
  测试本地库是否升级  
  $ export HADOOP_ROOT_LOGGER=DEBUG,console  
  $ hadoop fs -text /test/data/origz/access.log.gz  
  12/04/25 08:54:47 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev
  6bb1b7f8b9044d8df9b4d2b6641db7658aab3cf8]
  12/04/25 08:54:47 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
  12/04/25 08:54:47 INFO util.NativeCodeLoader: Loaded the native-hadoop library 12/04/25 08:54:47 INFO zlib.ZlibFactory:
  Successfully loaded & initialized native-zlib library
  12/04/25 08:54:47 DEBUG fs.FSInputChecker: DFSClient readChunk got seqno 0 offsetInBlock 0 lastPacketInBlock false
  packetLen 132100  
  可以看到将glibc升级后不再报错,已经成功加载本地库
  功能练习一:
  下载文件命令
  hadoop fs -get hdfs://northbigpenguin:9000/jdk1.6 /root/jdk1.6
  上传文件命令
  hadoop fs -put jdk-6u45-linux-x64.tar hdfs://northbigpenguin:9000/jdk1.6
  上传文件需要是rar文件,没有自己创建一个
  (1)下载一个jdk。无论什么压缩包,window是本地解压后,打包成.zip文件
  (2)将该文件上传到linux系统
  (3)系统内解压
  unzip jdk-6u45-linux-x64.zip
  (4)生成文件夹 jdk-6u45-linux-x64
  (5)将该文件夹压缩成tar
  tar -cvf jdk-6u45-linux-x64.tar  jdk-6u45-linux-x64
  (6)上传到linux的hadoop上
  (7)下载文件
  (8)linux中解压
  tar -xzvf jdk1.6
  不好使就用
  tar -xvf jdk1.6(出现错误用这个)
  功能练习二:
  统计单词数量的上传文件
  进入目录:
  /root/cloud/hadoop-2.2.0/share/hadoop/mapreduce
  vi wordCount.txt
  写入  单词十二个
  HELLO WORLD
  HELLO BABY
  HELLO a
  HELLO B
  HELLO C
  HELLO D
  wc wordCount.txt
  得到:
  6(行) 12(单词数) 55(字符) wordCount.txt
  上传到服务器
  hadoop fs -put wordCount.txt hdfs://northbigpenguin:9000/wordCount
  查看是否上传成功:
  hadoop fs -ls hdfs://northbigpenguin:9000/
  目录/mapreduce下
  执行:
  hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount hdfs://northbigpenguin:9000/wordCount hdfs://northbigpenguin:9000/Cout
  hadoop jar(命令)  jar包    命令(统计单词数量) 输入位置  输出位置
  Map-Reduce Framework
  Map input records=6
  Map output records=12
  Map output bytes=103
  Map output materialized bytes=73
  Input split bytes=102
  Combine input records=12
  Combine output records=7
  Reduce input groups=7
  Reduce shuffle bytes=73
  Reduce input records=7
  Reduce output records=7
  Spilled Records=14
  Shuffled Maps =1
  Failed Shuffles=0
  Merged Map outputs=1
  GC time elapsed (ms)=370
  CPU time spent (ms)=3150
  Physical memory (bytes) snapshot=315904000
  Virtual memory (bytes) snapshot=1650171904
  Total committed heap usage (bytes)=136122368
  Shuffle Errors
  BAD_ID=0
  CONNECTION=0
  IO_ERROR=0
  WRONG_LENGTH=0
  WRONG_MAP=0
  WRONG_REDUCE=0
  File Input Format Counters
  Bytes Read=55
  File Output Format Counters
  Bytes Written=39
  成功标志
  8、配置ssh免登陆
  远程创建文件
  ssh 10.129.205.237 mkdir /root/xiaobaitu
  两台机器都需要配置ssh才能执行远程连接:
  (1)基于 RedHat / CentOS 的系统 :
  下载安装(完成后会装在root目录下:执行命令ls -a查看隐藏文件.ssh):
  # yum install openssh-server openssh-clients
  OpenSSH Server安装完成后在/etc/init.d目录下应该会增加一个名为sshd的服务。
  chkconfig --list sshd
  手动启动sshd服务,方便后面客户端的连接:
  $ /etc/init.d/sshd start
  (2)方法二:安装SSH:
  yum install ssh
  启动SSH:
  service sshd start
  设置开机运行:
  chkconfig sshd on
  1、创建:
  mkdir /root/.ssh
  2、生成ssh免登陆密钥
  进入到我的home目录
  cd ~/.ssh
  3、生产密钥
  ssh-keygen -t rsa (四个回车)
  执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
  将公钥拷贝到要免登陆的机器上

  cp>  或者
  将公钥拷贝到要免登陆的机器上
  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  注意:
  公钥必须叫authorized_keys,系统默认的
  登录本机不输密码
  ssh northbigpenguin
  退出登录
  exit
  查看公钥
  cat ~/.ssh
  单项连接:
  拷贝自己的公钥到其他你想不用密码登录的机器上
  ssh-copy-id 10.129.205.237(想要免密码的机器)
  想访问别人,就是考自己的密码给别人,反之考别人的密码给自己
  此时会弹出对话框
  root@10.129.205.237's password:
  输入对方的密码
  会返回:
  Now try logging into the machine, with "ssh '10.129.205.237'", and check in:
  .ssh/authorized_keys
  to make sure we haven't added extra keys that you weren't expecting.
  表示成功
  ssh  10.129.205.237 变成别人机器登录
  exit退出变回自己机器
  双向连接:
  互相有对方的公钥
  另一台机器的 ssh-keygen -t rsa 生成了id_rsa(私钥)、id_rsa.pub(公钥)外加authorized_keys(第一台机器的公钥)
  authorized_keys是设置的别名以防止重复覆盖
  所以此时只需 执行
  ssh-copy-id 10.129.205.250(另一台机器的ip)
  然后输入器确认和密码
  Are you sure you want to continue connecting (yes/no)? yes
  root@10.129.205.250's password:
  测试连接:
  ssh 10.129.205.250

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425308-1-1.html 上篇帖子: 分布式(hadoop)内核研发面试指南 下篇帖子: 嘻哈怒叱
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表