1、普开数据大数据课程培训讲解hadoop安装步骤普开数据大数据课程培训讲解:hadoop安装步骤。本次环境一共三台服务器,JAVA使用的版本是jdk1.6.0_45,zookeeper-3.4.5,hadoop-2.0.0,hive-0.10.0,hbase-0.94.6主机名IP地址用途vmtmstorm01192.168.59.178namenode、jobtracker monitor04192.168.59.173datanode、tasktracker monitor01192.168.59.170datanode、tasktracker 对于hadoop来说,在hdfs看来节点分为n
2、amenode、datanode。namenode只有一个,datanode可以是很多;在mapreduce看来节点分为jobtracker、tasktracker,jobtracker只有一个,tasktracker有多个。我这里是将namenode和jobtracker部署在同一节点上,datanode和tasktracker部署在其它节点上,1. 安装jdk,上传到/root目录下,执行chmod a+x jdk-6u14-linux-x64.bin./jdk-6u14-linux-x64.bin将安装目录移动到/app目录下mkdir/appmv jdk1.6.0_45 /app建立链
3、接:mkdir -p /app/java/; (-p确保目录名称存在,如果目录不存在的就新创建一个) ln -sf /app/jdk1.6.0_45 /app/java/latest/(-f:链结时先将与 dist 同档名的档案删除-s:进行软链结(symbolic link)配置JAVA的环境变量vi /etc/profile添加如下内容:export JAVA_HOME=/app/jdk1.6.0_45export PATH=$JAVA_HOME/bin:$PATH让添加的环境变量生效执行如下命令: source /etc/profile; java version2. 配置网络以root
4、账户登录每台服务器,并执行如下操作:vi /etc/hosts添加如下内容:192.168.59.178 vmtmstorm01192.168.59.173 monitor04192.168.59.170 monitor01注:在所有服务器的/etc/hosts文件中添加如上内容;同时,修改windows下该文件,使得个人的笔记本也能识别主机名 c:windowssystem32driversetchosts 中添加如上内容。3. 配置SSH互信SSH互信:在目标机器上,预先设置好经过认证的key文件,当需要访问目标机器时,目标机器通过key文件,对访问者进行自动认证,从而实现互信。在任意一台
5、服务器上,以bdp账号登陆(密码123)执行如下命令,生成bdp账号的密钥对 (这里是主机执行)/usr/bin/ssh-keygen -t rsa cd /.ssh/cp id_rsa.pub authorized_keys chmod 600 authorized_keys 将/.ssh目录拷贝覆盖到集群其他节点的bdp用户目录下 scp -r .ssh/ 192.168.59.173:/ scp -r .ssh/ 192.168.59.170:/ 注意,要确保/etc/ssh/sshd_config 的RSAAuthentication和PubkeyAuthentication为yes,
6、(打开认证方式)改好后重启ssh服务 /sbin/service sshd restart执行 ssh hostname 测试是否配置成功 4. 操作系统参数优化 (每台机器,且以root操作)4.1防火墙配置:关闭selinux / iptables (每台机器,root权限) 关闭iptables 停止服务:service iptables stop 关闭服务自动启动:chkconfig -del iptables 关闭selinux 修改/etc/selinux/config里SELINUX=disabled 4.2 关闭swapiness,减少swap使用倾向 (每台机器,root权限
7、) 当系统有swap时会很慢,所以让系统最大限度的使用物理内存(默认vm.swappiness = 60) 修改/etc/sysctl.conf,增加一行 vm.swappiness = 0echo vm.swappiness = 0 /etc/sysctl.conf 动态生效 sysctl -w vm.swappiness=0 ( -w 临时改变某个指定参数的值) 查看是否生效 cat /proc/sys/vm/swappiness (/proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的)注:sysctl.conf是一个用于在系统运作中查看及调整系统参数的工具4.3 最
8、大打开文件数和最大进程数limits.conf (每台机器,root权限) Linux默认是1024,对于分布式文件系统太小,Hadoop有可能会报错误 执行 ulimit -a,查看open files项和max user processes项 执行下面脚本,修改这两项值 echo * - nofile 1000000 /etc/security/limits.conf echo YOUR_USER_NAME - nproc 1000000 /etc/security/limits.conf sysctl p 重启服务器,执行 ulimit -a 查看是否修改成功 ?在/etc/securi
9、ty/limits.conf中重复出现了多个YOUR_USER_NAME - nproc 10000004.4 屏蔽文件访问时间,优化/etc/fstab参数 (每台机器,root权限)(注:未配置) HDFS存储着海量文件,如果屏蔽底层Linux的文件访问时间,会提高HDFS的IO 修改/etc/fstab,添加如下noatime,nodiration,例如 LABEL=/data1 /data1 ext4 defaults,noatime,nodiratime 1 2LABEL=/data2 /data2 ext4 defaults,noatime,nodiratime 1 2LABEL=
10、/data3 /data3 ext4 defaults,noatime,nodiratime 1 2 重新mount或重启机器使之生效 注:由于我们使用的是虚拟机,可以不配置该参数 4.5 配置ntp时间同步 (每台机器,root权限) 在Hadoop集群中,要求服务器之间的时间同步 选一台服务器作为NTP server, 修改 /etc/ntp.conf 如下,restrict default nomodifyserver 192.168.59.178fudge 192.168.59.178 stratum 8并重启 service ntpd restart 在集群其他节点上,首先关闭NTP
11、service ntpd stop 执行/usr/sbin/ntpdate NTPSERVER_IP 进行同步,执行 date 查看是否正确 再cron里加入同步命令:执行 crontab e (-e:执行文字编辑器来设定时程表,内定的文字编辑器是 VI,),添加如下内容,使其每小时同步一次 测试情况:/etc/ntp.conf文件下192.168.59.178:restrict default nomodifyserver 192.168.59.178fudge 192.168.59.178 stratum 8192.168.59.173:server 192.168.59.178 fudg
12、e 192.168.59.178 stratum 10192.168.59.173:无修改结果:三台机器时间已同步补充:crontab -u user filecrontab -u user -l | -r | -e 说明:crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。 参数:-e:执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,
13、则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) -r:删除目前的时程表 -l:列出目前的时程表 时程表的格式如下:f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都
14、要执行,其余类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推 5. Zookeeper安装5.1 ZK配置:单节点配置在$ZOOKEEPER_HOME/conf/zoo.cfg ( /app/zookeeper-3.4.5-cdh4.3.0/conf/zoo.cfg)中做如下定义 tickTime=5000dataDir=/app/zookeeper-3.4.5-cdh4.3.0/data (/tmp/zookeeper /tmp用来存放不同程序执行时产生的临时文件)clientPort=2181配置参数 a) t
15、ickTime: 每个tick的时间长度(毫秒),是zk中最小时间单元。 b) dataDir:内存快照(snapshot)和transaction log的存储目录c) clientPort :用于服务client连接的端口号5.2 ZK配置:多节点配置(为3个节点的集群)在$ZOOKEEPER_HOME/conf/zoo.cfg ( /app/zookeeper-3.4.5-cdh4.3.0/conf/zoo.cfg)中做如下定义tickTime=5000dataDir=/app/zookeeper-3.4.5-cdh4.3.0/dataclientPort=2181initLimit=1
16、0syncLimit=5server.1=192.168.59.178:4888:5888server.2=192.168.59.173:4888:5888server.3=192.168.59.170:4888:5888 配置参数 initLimit: 刚选举出leader后,followers 与leader 连接和同步(connect/sync)的时间周期: initLimit*tickTime。 syncLimit:正常工作状态下,允许followers与leader同步(sync)的时间,当follower与leader相差太大的话,该follower将被排除出集群。 server.
17、x=hostname:nnnnn:nnnnn第一个端口用于follower与leader连接,第二个端口用于leader election。同时在dataDir目录下创建一个名为myid的文件,里面写入1或者2或者3,该值与zoo.cfg中的“server.#=”的#一致 需要在每个zookeeper上均执行 bin/zkServer.sh start,该集群才可以正常工作 启动zookeeper服务: bin/zkServer.sh start 停止zookeeper服务:bin/zkServer.sh stop由于HBase和Hadoop依赖于ZK,所以在停止ZK时需要首先关闭HBase和
18、Hadoop。 检查Zookeeper运行状态: bin/zkCli.sh -server 172.168.0.1:2181或者直接运行 bin/zkCli.sh在shell中运行help来查看可用命令 zk: localhost:2181(CONNECTED) 0 helpZooKeeper -server host:port cmd args connect host:port get path watch ls path watch set path data version rmr path delquota -n|-b path quit printwatches on|off cr
19、eate -s -e path data acl stat path watch close ls2 path watch history listquota path setAcl path acl getAcl path sync path redo cmdno addauth scheme auth delete path version setquota -n|-b val path 6 Hadoop安装 6.1 Hadoop安装路径/app/hadoop-2.0.0-cdh4.3.06.2 配置Hadoop的环境变量vi /etc/profile添加如下内容:(192.168.59.
20、178情况)export HADOOP_HOME=/app/hadoop-2.0.0-cdh4.3.0export PATH=.:$HIVE_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH让添加的环境变量生效执行如下命令: source /etc/profile; 6.3 设置Hadoop需要的环境变量 添加Hadoop需要的环境变量在$HADOOP_HOME/etc/hadoop-mapreduce1目录下的hadoop-env.sh中设置Hadoop需要的环境变量,其中JAVA_HOME是必须设定的变量 export JAVA_HOME=/ap
21、p/java/latest修改slaves文件在$HADOOP_HOME/etc/hadoop-mapreduce1目录下的slaves添加vmtmstorm01monitor04monitor01(包含:所有tasktracker节点的IP/Hostname列表)masters文件在$HADOOP_HOME/etc/hadoop-mapreduce1目录下的masters内容:localhost修改core-site.xml文件fs.defaultFShdfs:/vmtmstorm01:8020 -9000The name for the cluster. HBase will use th
22、is to connect to HDFSpression.codecspress.DefaultCodec,press.GzipCodec,press.BZip2Codec,press.SnappyCodechadoop.tmp.dir/app/hadoop-2.0.0-cdh4.3.0/tmp修改hdfs-site.xml文件dfs.namenode.name.dir/home/bdp/dfs/nn -NameNode元数据存储目录,可多个,逗号分隔 dfs.data.dir/home/bdp/dfs/data1,/home/bdp/dfs/data2,/home/bdp/dfs/data
23、3dfs.blocksize268435456dfs.namenode.secondary.http-addressvmtmstorm01:50070 -secondarynamenode:50070 修改mapred-site.xml文件 mapred.job.trackervmtmstorm01:9001mapred.local.dir/home/bdp/mapred/local1,/home/bdp/mapred/local2,/home/bdp/mapred/local3 mapred做本地计算所使用的文件夹,可以配置多块硬盘,逗号分隔mapred.map.tasks1默认每个job所
24、使用的map数,意思是假设设置dfs块大小为64M,需要排序一个60M的文件,也会开启2个map线程,当jobtracker设置为本地是不起作用。 mapred.reduce.tasks1description默认每个job所使用的reduce数,意思是假设设置dfs块大小为64M,需要排序一个60M的文件,也会开启2个reduce线程,当jobtracker设置为本地是不起作用。 mapred.tasktracker.map.tasks.maximum2每服务器允许启动的最大map槽位数。 mapred.tasktracker.reduce.tasks.maximum1每服务器允许启动的最大
25、reduce槽位数. mapred.child.java.opts-Xmx1024m -D.preferIPv4Stack=true -XX:+UseParallelGCJava opts for the task tracker child processes. The following symbol, if present, will be interpolated: taskid is replaced by current TaskID. Any other occurrences of will go unchanged. For example, to enable verbos
26、e gc logging to a file named for the taskid in /tmp and to set the heap maximum to be a gigabyte, pass a value of: -Xmx1024m -verbose:gc -Xloggc:/tmp/taskid.gc The configuration variable mapred.child.ulimit can be used to control the maximum virtual memory of the child processes.press.map.outputtrue
27、 map输出结果在进行网络交换前是否以压缩格式输出,默认false,建议true,可以减小带宽占用,代价是会慢一些。 将该配置拷贝至所有tasktracker节点将/app/ hadoop-2.0.0-cdh4.3.0目录拷贝覆盖到集群其他节点, 保证目录结构一致scp -r /app/hadoop-2.0.0-cdh4.3.0 192.168.59.173:/ scp -r /app/hadoop-2.0.0-cdh4.3.0 192.168.59.170:/ 6.4 启动之前,我们先要格式化namenode/app/ hadoop-2.0.0-cdh4.3.0下仅在首次启动HDFS前执行 在NameNode执行bin/hadoop namenode -format 6.5 MapReduce服务启停:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1